2010-07-14 5 views
1

사용자가 제출 버튼을 클릭하기 전에 XSS를 막는 Javascript를 통해 입력 상자를 자동으로 포맷 할 수있는 방법이 있습니까?XSS를 막는 자바 스크립트

예를 들어, 사용자가 텍스트 상자에 스크립트 공격을 입력하면 자바 스크립트는 자동으로 텍스트 상자의 값을 안전한 형식으로 서식을 지정합니다.

btw, 나는 단지 XSS를 방지하기 위해이 절차에 의존하지 않고 클라이언트 기반에 ASP.Net을 XSS로 간주하도록하는 문구가 있습니다.

문구 : OMY G<W TUBE/OVARYOMY G< W TUBE/OVARY이 잠재적 위험으로 간주되지 않은 상태에서 XSS으로 이것을 고려하는 페이지를 트리거 여기에 정확한 예입니다.

+2

JavaScript에서 * something * 할 수 있을까요? 물론, 효과가 있을까요? 전혀. 이러한 종류의 악용을 사용하는 사람들은 JavaScript 명령에 포함 된 것을 우회하여 콘솔 명령 또는 두 가지 명령에서이를 방지합니다. –

+0

나는 이미 이것을 기대하고 있지만 텍스트를 한 번만 변경해도 올바른 값을 입력 할 수 있다면 나는 그걸로 충분하다. 나는 pagevalidation을 비활성화하고 시스템에 들어가는 모든 문자열을 htmlencode 할 수 있지만 위험을 무서워합니다. 차라리 주입 검사를 ON으로 설정하고 사용자가 올바른 방법으로 입력하는 데 도움이됩니다. –

답변

2

를 방지 당신이 ASP.Net을 유발 정확히 알아낼 수 있다고 가정 할 수있다 XSS 필터. 예를 들어, 당신 같이 사건을 해결합니다

<form id="form" onsubmit="fix()"> 
    <input id="textbox" /> 
    <input type="submit" /> 
</form> 
<script> 
    function fix() { 
     var t = document.getElementById('textbox'); 
     t.value = t.value.replace(/<(\w)/, '< $1'); 
    } 
</script> 

이 "솔루션"은 어떠한 방법으로 XSS 공격을 방지하거나 어떤 방식으로 입력을 확인하지된다는 점을 양해 해 주시기 바랍니다. XSS 공격은 서버 측에서만 방지 할 수 있습니다.

+0

아니요, 그렇지 않습니다. JavaScript가 비활성화되면 잘못된 데이터가 전송됩니다. 또한이 양식을 통해 전송 된 것만 "수정"합니다. 서버에 데이터를 제출하는 유일한 방법은 아닙니다 (수동으로 요청을 만들 수 있습니다). 데이터 *는 입력시가 아니라 디스플레이에서 검증되어야합니다. 이것이이를 올바르게 수행하는 유일한 방법입니다. 다른 모든 것은 잘못되었습니다. –

+0

이것은 효과적이지 않으며 공격자는 JavaScript를 비활성화하고 필터를 피할 수 있습니다. 또는 Firebug 또는 Groundspeed와 같은 도구를 사용하여 이벤트 처리기를 제거 할 수 있습니다. 클라이언트 쪽에서 입력 유효성 검사가 작동하지 않으면 공격자는 필터를 제거/우회/취소 할 수 있습니다. @silky 언급으로 서버 측에 있어야합니다. – flpmor

+0

서버 측 방지가 있습니다. –

3

아니요, 없습니다.

XSS 만하지 하드.에 표시하고있는 지정된 컨텍스트에 대해 신뢰할 수없는 데이터를 포맷하여, 서버 시간에

+0

정말로 틀린 것입니다. 그러나 Martin은 XSS를 방지하는 방법을 묻지 않습니다. 그는 ASP.Net의 XSS 예방 시스템을 어떻게 방해할지 묻는 것일뿐입니다. –

+0

@Mark : 그는 아닙니다. ASP.NET의 예방 시스템을 "방해하는"방법은 해제하는 것입니다. 사소한 일이야. –

+0

hello Silky & Mark, 귀하의 의견에 진심으로 감사 드리며 귀하는 정확합니다. 나는 예방 시스템을 끄는 것을 분명히 알고있다. 그러나 나는 그들이 위에있는 나의 예처럼 가치를 입력하는 것을 허용하면서 그것을 계속 갖고 싶다. 나는 단순히 예방과 사람들이 원하는 것을하도록 제한하지 않는 균형을 이루고 있습니다. 나는 여전히 최선의 방법을 고려하고 있지만,이 솔루션이 "<"가 페이지를 게시를 멈추게하는 문자를 갖지 못하도록 막을 수 있다면, 나는 그걸로 충분하다. –