묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결웹 개발의 핵심, HTTP 완벽 마스터하기!
실무에서 웹개발자가 명시적으로 선언하는 보안 정책의 범위 및 보안 정책 설정 위임 라이브러리
실무 환경에서는 웹 개발자들이 이런 브라우저 보안 정책들(CSP, CORS, SRI, 쿠키 속성, Referrer-Policy 등)을어느 정도 수준까지 직접 명시적으로 선언하고 관리하는지가 궁금합니다.예를 들어,어떤 정책들은 코드나 미들웨어에서 직접 작성하고,어떤 정책들은 서버나 CDN 레벨에서 일괄 설정되는지그 구분의 현실적 기준이 있다면 듣고 싶습니다.또한 이런 보안 헤더들을 설정할 때 자주 사용하는 라이브러리나 프레임워크 추천도 부탁드립니다.(예: Express helmet, Next.js next-safe, Nginx 보안 헤더 설정 등)
-
미해결웹 개발의 핵심, HTTP 완벽 마스터하기!
브라우저 내부 보안 정책 스코프에 대한 질문
CSP, CORS, SRI, 쿠키 속성, Referrer-Policy 같은 HTTP 기반 보안정책들은서버가 응답 헤더로 내려주면 브라우저의 내부 policy layer에서 관리된다고 알고 있습니다.그런데 이때 브라우저가 이런 보안 정책들을 저장하고 적용하는 단위가Origin 단위(정확히 scheme + host + port)로 관리되는지,아니면 Site 단위(예: eTLD+1 기반, 쿠키 격리처럼 더 넓은 범위) 로 관리되는지도 궁금합니다.즉, 브라우저의 보안 정책(policy layer)은 어떤 기준 단위로 정책을 식별·적용하며,개발자가 설정한 CSP나 CORS 같은 정책들이 브라우저 내부에서어떤 스코프로 캐싱·격리되어 동작하는지 알고 싶습니다.
-
미해결웹 개발의 핵심, HTTP 완벽 마스터하기!
ETag 사용시 서버의 성능 향상
서버에서는 캐싱의 유무와 상관없이 매번 리소스에 대해 digest 를 하게 되는것 같은데요.그러면, 브라우저가 리소스를 캐싱한다고 해서 '서버성능에 도움이 되기보다는 네트워크 대역폭을 아낄수 있다' 정도의 이점이 있다고 보면 될까요?
-
미해결웹 개발의 핵심, HTTP 완벽 마스터하기!
next.js 와 SOP
react (client) + node.js (backend) 와 같은 구성에서는 SOP 에서 설명해주신 '동일 출처 정책' 으로 인해 'fetch' 등을 사용할때 막히는 경우가 종종 있었는데요. 그래서, 이전에는 fe 팀과 be 팀이 개발을 할때 CORS 작업을 항상 했었던걸로 기억합니다. 최근에 많이 사용하는 next.js 는 bff (backend for frontend) 가 중간에 있어서 SOP 로 인한 문제가 거의 없는것 같은데요. (SOP 는 설명해주신것처럼 브라우저 자체의 보안이기 때문에) 이렇게 이해하는게 맞을까요?
-
미해결웹 개발의 핵심, HTTP 완벽 마스터하기!
사전 요청 관련 질문
put, patch, delete 메서드의 경우 options (사전 요청) 을 보내게 된다고 하셨는데요. 물론, 설명 주신것처럼 "Access-Control-Max-Age" 를 통해서 캐싱을 하는 방법도 있겠지만, get 과 post 요청만 사용하는게 (사전 요청을 하지 않으니) 좀 더 효율적인 방법이 될수 있을까요?
-
미해결웹 개발의 핵심, HTTP 완벽 마스터하기!
rest api 에서의 csrf
예제에서 처럼 html 을 response 하지 않고 rest api 를 통해 fe 와 통신하는 경우에도 csrf 를 사용하는 경우가 있을까요? 만약 있다면 어떻게 사용하는지도 알고 싶습니다.
-
미해결떠먹는 자바스크립트 비동기
교안 어디있나요?
교안 어디서 다운받나요?
-
미해결[NarP Series] MVC 프레임워크는 내 손에 [나프2탄]
ping 연결관련
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964)at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973)at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909)at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:873)at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4420)at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1278)at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2194)at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2225)at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2024)at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:779)at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)at sun.reflect.GeneratedConstructorAccessor36.newInstance(Unknown Source)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)at java.lang.reflect.Constructor.newInstance(Constructor.java:423)at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:389)at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:330)at org.eclipse.datatools.connectivity.drivers.jdbc.JDBCConnection.createConnection(JDBCConnection.java:328)at org.eclipse.datatools.connectivity.DriverConnectionBase.internalCreateConnection(DriverConnectionBase.java:105)at org.eclipse.datatools.connectivity.DriverConnectionBase.open(DriverConnectionBase.java:54)at org.eclipse.datatools.connectivity.drivers.jdbc.JDBCConnection.open(JDBCConnection.java:96)at org.eclipse.datatools.enablement.internal.mysql.connection.JDBCMySQLConnectionFactory.createConnection(JDBCMySQLConnectionFactory.java:28)at org.eclipse.datatools.connectivity.internal.ConnectionFactoryProvider.createConnection(ConnectionFactoryProvider.java:83)at org.eclipse.datatools.connectivity.internal.ConnectionProfile.createConnection(ConnectionProfile.java:359)at org.eclipse.datatools.connectivity.ui.PingJob.createTestConnection(PingJob.java:76)at org.eclipse.datatools.connectivity.ui.PingJob.run(PingJob.java:59)at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) 열심히 찾아보고 있지만 모르겠네요.
-
미해결코드로 배우는 스프링 웹 프로젝트 - Intermediate
@AuthenticationPrincipal
@AuthenticationPrincipal MemberVO memberVO이게 MemberVo 로 뽑을수 있는 이유가MemberVO implements UserDetails MemberVO 가 UserDetails를 구현했기때문에시큐리티컨텍스트에 MemberVO값이저장되어있기 떄문이라고 생각하면 될까요 ?
-
미해결웹 개발의 핵심, HTTP 완벽 마스터하기!
하이잭킹 관련 문의
서버 구성해서 직접 만들고 있는데, 입력폼에서 스크립트가 안먹히더라고요. 쭉 강의 보고 실습필요한 부분 다시 보는데 일전에 브라우져 설정을 변경 했었었나요. 기억이 가물합니다! Content-Security-Policy-Report-Only 이 옵션 때문에 가능했던가요.
-
미해결코드로 배우는 스프링 웹 프로젝트 - Intermediate
첨부파일 트랜잭션
현재 코드가 board 컨트롤러에 있습니다. List<AttachVO> attachVOList = upDownUtil.upload(files); 하지만 그 아래 boardService.register(boardVO);코드에는 (서비스 코드에는 트랜잭션 처리가 되어있음) 여기서 register 할떄 오류가나면 트랜잭션 처리로 디비에는 등록되지않지만 파일이 로컬에 저장되는건 막을수가 없는건가요 ?
-
미해결웹 개발의 핵심, HTTP 완벽 마스터하기!
캐싱 관련 문의
수업에서 브라우저 인스펙터의 옵션에서 [캐시 사용안함] 를 off 후 테스트 하셨는데 캐시 사용 안함은 헤더와 상관없이 캐시를 아예 사용안하는 옵션인가요
-
미해결떠먹는 자바스크립트 비동기
교안 어디서 찾아야하나요?
동기와 비동기 개념동기와 비동기 개념이전다음봤어요커리큘럼질문&답변노트채팅스크립트 질문&답변제목
-
미해결웹 개발의 핵심, HTTP 완벽 마스터하기!
TypeError: querystring is not a function 에러 나시는 분들
querystring.decode(body)로 하시면 해결 가능합니다
-
미해결[NarP Series] MVC 프레임워크는 내 손에 [나프1탄]
WEB-INF 파일 관련 53강 에러발생
안녕하세요, 강의 진행 중 53강에서 WEB-INF 폴더로 member폴더를 이동했는데도 계속 404 에러가 발생해서 질문 남깁니다.이전까지는 결과가 잘 실행되었는데 이 부분이 문제입니다.혹시나 해서 이클립스 껐다가 다시 실행, 서버 클린, 서버 다시 실행, MYSQL 다시 실행, 프로젝트 클린, 웹브라우저 캐시 비우고 강력새로고침도 해봤고... 콘솔로 결과값도 찍어봤는데 경로도 나옵니다ㅠㅠ 어디를 놓친 것인지 모르겠네요.관련 이미지를 첨부드립니다. .
-
미해결[NarP Series] MVC 프레임워크는 내 손에 [나프1탄]
질문드립니다.
이렇게 설정되어있고, class파일도 잘 생성된것을 확인했는데, SEVERE: 경로 [/web]의 컨텍스트 내의 서블릿 [jsp]을(를) 위한 Servlet.service() 호출이, 근본 원인(root cause)과 함께, 예외 [JSP를 위한 클래스를 컴파일할 수 없습니다.: JSP 파일 [/sum.jsp]의 [5] 행에서 오류가 발생했습니다.MyUtil cannot be resolved to a type2: pageEncoding="UTF-8"%>3: <%@page import="kr.web.util.*" %>4: <%5: MyUtil my = new MyUtil();6: int sum = my.hap();7: %>8: <!DOCTYPE html>JSP 파일 [/sum.jsp]의 [5] 행에서 오류가 발생했습니다.MyUtil cannot be resolved to a type2: pageEncoding="UTF-8"%>3: <%@page import="kr.web.util.*" %>4: <%5: MyUtil my = new MyUtil();6: int sum = my.hap();7: %>8: <!DOCTYPE html>Stacktrace:]을(를) 발생시켰습니다.org.apache.jasper.JasperException: JSP를 위한 클래스를 컴파일할 수 없습니다.: 이와같은 오류가 발생합니다. 이유가 무엇일까요?
-
미해결[NarP Series] MVC 프레임워크는 내 손에 [나프1탄]
질문이있습니다.
이와같이 설정하였는데요, server.xml에도 <Context path="/web" docBase="C:\eclipse-jee-2019-09-R-win32-x86_64\WEB\webapp"/> 이와같이 등록을 해주었습니다. 톰캣을 실행한 뒤 localhost:8081/web으로 접속하는 경우, localhost:8081/web/index.html과 동일한 화면이 출력되어 나옵니다. index2.html의 경우는 localhost:8081/web/index2.html 이렇게 정확하게 명시를 해줘야 index2.html화면이 나오던데요. 기본적으로 localhost:8081/web 를 입력한 경우 index.html이 출력되어 나오는 이유와, localhost:8081/web/index.html해당 url이 localhost:8081/web 와 동일한 동직을 수행하는 이유와 동일하게 수행되는 원리가 궁금합니다. 그리고 localhost:8081/web의 경우 왜 index2.html이 아닌 index.html이이 지정되어 나오는지 궁금합니다.
-
미해결[NarP Series] MVC 프레임워크는 내 손에 [나프1탄]
bin폴더가 존재하지않아요
전자정부 프레임워크 3.9의 경우 종료되었다고해서 3.10을 다운 받았는데요, eGovFrame-3.10.0-Win-64bit.exe (3,641,056,401 Byte) 해당 파일을 다운로드 받았는데, jdk와 mysql등이 포함되어있는 bin폴더가 없는데 어떻게 해야하나요?
-
미해결웹 개발의 핵심, HTTP 완벽 마스터하기!
강사님은 어떤 책으로 HTTP 를 공부하셨나요?
완강 후 책도 한번 읽어보려고 합니다추가로 강의자료 링크를 강의 아래에 달아주시면 좋을 것 같습니다.
-
미해결[NarP Series] MVC 프레임워크는 내 손에 [나프2탄]
26강에서 member1에 사진 인서트할때 500 오류가 떠요
그 전에 alert로 파일이름 출력할때는 사진도 폴더에 잘들어가고 하는데 그 후에 member1에 인서트할때 아래같은 오류가 뜨네요 코드 몇번이고 다시 확인하고 했는데 똑같아요 ㅠ