2013-05-15 3 views
1

그래서 내가 원하는 제목을 게시하지 못하게 막았습니다. 그래서 마침내 제목을 붙였습니다. 내가 가진스크립트가 실행되는 것을 방지하는 방법

는 사용자가 입력 할 수 필드와 자바 스크립트에서 우리는 그런

'${chart.title}' 

물건이있다. 작은 따옴표 문자를 제거하여 자바 스크립트로 다시 이스케이프 처리 할 수 ​​없으면 충분합니까? 또는 작은 따옴표 문자로 시작하는 문자열을 닫는 다른 방법이 있습니다.

$ {chart.title}은 사용자가 이전 페이지에 입력 한 제목을 삽입하므로 자연스럽게 제목에 + callMethod() + 'RestOfTitle "과 같은 형식으로 자바 스크립트에 callMethod를 삽입 할 수 있습니다.

덕분에, 딘

+0

입력을 서버에 전달하고 있습니까? 그렇다면 XSS 필터를위한 장소라고 생각합니다. – bfavaretto

답변

1

가장 좋은 방법은 영숫자과 공간 문자 입력을 제한하는 것입니다.

제목 안에 아무 것도 허용하려면 이스케이프 기능을 사용할 수 있습니다. http://xkr.us/articles/javascript/encode-compare/

작은 따옴표 문자열을 제거하는 것만으로는 충분하지 않습니다. 새로운 이유를 생각해보십시오.

1

몇 가지 옵션이 있습니다.

먼저 매우 제한적인 방식으로 진행하고 제목 입력란에 white-list validation을 입력하고 페이지에 출력하는 텍스트를 항상 인코딩합니다. 필터를 적용한 후에 일부 js 코드를 포함하도록 텍스트를 업데이트하는 경우) 인코딩 절차로 인해 모든 악의적 인 js 스크립트가 실행 가능하지 않게됩니다 (그것을 일반 텍스트로 바꾼다).

둘째, 사용자가 원하는 것을 입력하게하십시오 (매우 권장하지는 않지만 언젠가는 개발자가 요청 했음).하지만 항상 페이지에 출력하는 텍스트를 인코딩하십시오.

정규식을 사용하여 화이트리스트 유효성 검사를 직접 구현하거나 라이브러리 중 하나를 사용할 수 있습니다.

관련 문제