이 코드가 무엇을하는지에 대해 생각해보십시오. 사실, 그것에 대해 생각하지 마라. 페이지가 브라우저에 표시되면 소스 코드를 엽니 다. 값 hello
세션 속성을 포함 가정하면, 다음 코드는
<script type="text/javascript">
var test = hello;
document.write (test);
</script>
그래서 값이 자바 스크립트 변수로 해석됩니다 생성합니다. 그리고
hello
이라는 변수를 정의하지 않았으므로
undefined
이됩니다.
그러나 지금 만 추가하면 따옴표 : 값이 사용자로부터 제공하기 때문에 때문에
var test = "<%= session.getAttribute("mySessionVar") %>";
은 당신은 아직도 당신이 말한대로, 그것은뿐만 아니라 그 자체를 인용하지만, 포함 할 수있는, 안전하지 않을 것이다 또한 더 많은 JavaScript 코드 또는 HTML 코드.
<script type="text/javascript">
var test = ""; while(1) {alert('This site is crap!')};</script><h1>This site is crap!</h1>
이제 귀하의 사이트는이 사이트는 쓰레기입니다 "표시되지 않습니다 :
사용자가 "; while(1) {alert('This site is crap!')};</script><h1>This site is crap!</h1>
(! 시작에 인용 문자 통지)
가 포함 된 소스 코드에 선도를 입력 상상 ! " 큰 문자로 표시되지만 사용자를 경고 상자가 끝없이 반복되는 방식으로 잠급니다. (Cross-Site Scripting)
숫자 1 웹 개발 규칙, NEVER EVER 정확히 이스케이프 처리되지 않은 항목 (특히 사용자 입력이 아님)이 출력됩니다. JavaScript에는 StringEscapeUtils.escapeJavaScript을, HTML에는 c:out
을 사용하십시오.
예를 들어 참조 : PS
: 데이터베이스를 사용하는 경우 I 희망, 당신은 당신을 탈출하는 SQL 문을 올바르게 수행하십시오. 그렇지 않으면 사람들은 매우 간단하게 액세스 할 수 있습니다. 데이터베이스 및 서버 (SQL injection)
그리고 값에 따옴표 문자가 포함되어 있으면 어떻게 될까요? – RoToRa
백엔드에서 처리해야합니다. – czerasz
"czerasz"- 감사합니다. – user1197071