8
내 코드에서 xss 공격을 테스트하고 있습니다. 아래 예제는 사용자가 원하는 것을 입력 할 수있는 간단한 상자입니다. "test!"를 누른 후 버튼, JS 두 divs.This에 입력 문자열을 보여줍니다 것은 내가 더 잘 내 질문에 설명하기 위해 만든 예입니다html() vs innerHTML jquery/javascript & XSS 공격
<html>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
function testIt(){
var input = document.getElementById('input-test').value;
var testHtml = document.getElementById('test-html');
var testInnerHTML = document.getElementById('test-innerHTML');
$(testHtml).html(input);
testInnerHTML.innerHTML = input;
}
</script>
<head>this is a test</head>
<body>
<input id="input-test" type="text" name="foo" />
<input type="button" onClick="testIt();" value="test!"/>
<div id="test-html">
</div>
<div id="test-innerHTML">
</div>
</body>
당신이 .html 파일에 복사하고 그것을 실행하려고하면, 괜찮 으면 좋겠지 만 <script>alert('xss')</script>
을 입력하려고하면 'test-html'div (html() 함수 사용) 내부에 하나의 경고 상자 만 표시됩니다.
정말 이런 일이, 또한, 불을 지르고와 코드를 검사하는 이유를 이해할 수는 test-html
사업부가 비어 볼 수
<body>
this is a test
<input id="input-test" type="text" name="foo">
<input type="button" value="test!" onclick="testIt();">
<div id="test-html"> </div>
<div id="test-innerHTML">
<script>
alert('xss')
</script>
</div>
</body>
(스크립트를 주입 후) 나에게이 결과를 제공하고, test-innerhtml
div 스크립트를 경비합니다. 누군가 왜 저에게 말할 수 있습니까? 왜냐하면 html()이 스크립트 삽입 또는 이와 유사한 보안으로부터 더 안전하기 때문입니까?
미리 감사드립니다.
당신은 사용자 유형과 같은 보안에 대해 걱정할 필요가 없습니다 왜냐하면 그들이 삽입하려고하는 스크립트가 그 시점에 그들을 fect하십시오. 당신이해야 할 일은 입력 된 텍스트가 웹 서버에 제출 될 때 무슨 일이 일어나는지입니다. 데이터베이스에 저장하는 경우 SQL의 끝에 입력 된 텍스트를 맹목적으로 연결하지 않도록해야합니다 질문. 나중에 이전에 입력 한 텍스트를 반환하는 경우 입력 한 값이 이스케이프 처리되어 "
예를 JQuery와 HTML 스크립트 태그
렌더링하지 않습니다하지만 당신은<a href>
스타일, 표현 등으로 많은 다른 XSS 페이로드를 사용할 수 있기 때문에 그것은 더 안전하지 않다 스크립트 태그는 dom에 추가하는 것을 보지 못하는 이유입니다. 이 JQuery와 그것을 밖으로 스트립 이유에 대한 설명을 보려면 여기 존 레식의 답변을 볼 수 https://forum.jquery.com/topic/jquery-dommanip-script-tag-will-be-removed희망이
출처
2011-11-29 22:39:42 Ben
* * 더 안전합니다. * 완전히 안전하지 않으므로 의존해서는 안됩니다. – Mario
네, 맞습니다.하지만 보안은 그다지 중요하지 않습니다. 단지 innerHTML에 덜 취약하다는 것에 동의합시다. – Ben
사실 ** ** jQuery는 더 많은 코드를 사용하기 때문에 jQuery는 내용을 평가하는 태그가 '
관련 문제