2016-10-28 4 views
1

jQuery를 사용하여 사용자에게 표시되는 페이지를 기반으로 내 웹 사이트에서 모든 입력 텍스트 항목 선택기를 찾아서 모든 특수 문자를 이스케이프 처리하고 싶습니다. 사이트 간 스크립팅을 방지하기 위해XSS를 방지하기 위해 모든 입력 유형의 TEXT에 대한 모든 특수 문자를 이스케이프 처리합니다.

페이지의로드에 기본적으로

거나, "텍스트"의 모든 입력 유형을 찾을 제출 예 :

<input type="text" class="datepicker hasDatepicker form-control" id="START_DATE" name="s_date" maxlength="4000" size="30" value="" autocomplete="off"> 

와 jQuery로

는 찾아 같은 모든 특수 문자를 대체 :

</option<script>alert("XSS")</script> 
XSS를 중지하려면

답변

4

처음에는 DOM에있는 데이터에서 크로스 사이트 스크립팅을 방지하기 위해 클라이언트 측 스크립팅을 사용할 수 없습니다.

의심스러운 코드가 귀하의 코드보다 먼저 실행되지 않아야 효과가 떨어질 수 있습니다. 이 작업은 서버 측에서 수행해야하지만 언어를 지정하지 않았으므로 여기서 도울 수 없습니다.

AJAX를 통해 데이터를 가져 와서 DOM에 추가하지만 여기서는 그렇지 않은 경우이 작업을 수행 할 수 있습니다. AJAX가 그러한 경우라면 eval 또는 이와 유사한 것을 사용하지 않는 한 걱정할 필요가 없습니다.

이 창에서 열린 JS 콘솔 쉬운 예를 제공하고 다음

$('input').val("<script>alert('derp');</script>"); 

당신은 경고를받을 수 없습니다 입력하고 데이터 멋지게의 오른쪽 상단에있는 검색 요소에 추가됩니다하려면 화면. 그냥 재미로 들어, 당신이 너무 순수 JS를 시도 할 수 있습니다 :

document.getElementsByTagName('input')[0].value = "<script>alert('test');</script>"; 

을 또한, 당신이 어떤 이유로 unsanitized 데이터와 DOM에 요소를 작성하는 경우 - 당신은 당신이 단순히를 만들기 위해 문자열을 연결하지 않는 것을 확인해야 대신 JS (일명 no jQuery .html())를 통해 정확하게 노드를 생성합니다.

+1

위생을위한 클라이언트 측 코드에 의존 할 수 없습니다. – LinuxDisciple

+0

분명히 나쁜 말을 선택합니다. 편집 –

+0

언어는 실제로 Oracle PL/SQL입니다. – tonyf

관련 문제