2017-01-02 15 views
0

현재 로다시를 사용하는 JavaScript로 코딩 된 일부 페이지 앱에서 작업하고 있습니다. 나는에 의해 표준 라이브러리를 사용하여 크로스 사이트 스크립팅 (XSS)를 방지하기 위해 싶습니다 등의 대상 CSS, HTML, HTMLAttribute 자바 스크립트, JSON에 따라 출력을 인코딩 모든 신뢰할 수없는 콘텐츠XSS를 방지하는 JavaScript 라이브러리 또는 Esapi - 신뢰할 수없는 데이터를 이스케이프 처리하고 인코딩합니다.

2) 이스케이프)

1

많은 스택 오버 플로우 해답을 보았지만 표준 라이브러리에 완전한 표준화/인코딩 솔루션을 제공하지 않아 개발자가 라이브러리를 사용하고 있는지 정적 테스트를 작성할 수 있습니다.

JavaScript 용으로 사용할 수있는 esapi 또는 이와 유사한 "light"라이브러리가 있습니까?

내가 입력 및 인코딩 출력을 정규화에만 관심이 순간에 OWASP ESAPI와 jQuery를 인코더 플러그인 https://github.com/chrisisbeef/jquery-encoder 과 세일즈 포스 인코더 https://github.com/salesforce/secure-filters

을 보았다. 나는 현재 잘 유지되고 이상적으로 다른 라이브러리에 의존하지 않는 뭔가를 찾고있다.

누구나 최상의 접근 방법을 제안 할 수 있습니까?

답변

0

사용중인 템플릿 프레임 워크가 있습니까? 기본적으로 인코딩을 처리하는 React와 같은 프레임 워크를 사용해야합니다. 그렇다면 dagerouslySetInnerHTML이 사용되지 않았는지 (또는 안전하게 사용되었는지) 확인해야합니다.

신뢰할 수없는 CSS를 추가하는 것은 허용 된 사이트 목록이 유효하지 않으면 안전하지 않은 것으로 간주됩니다. 신뢰할 수없는 데이터를 태그에 추가하는 것은 element.textContent에 데이터를 할당하거나 jQuery의 $ .text()를 사용하여 안전하게 수행 할 수 있습니다. 이벤트 처리기가 아닌 HTML 특성에 신뢰할 수없는 데이터를 추가하는 작업은 element.setAttribute 또는 $ .attr()을 사용하여 수행 할 수 있습니다. 내부 스크립트 태그 (html 컨텍스트 내의 javascript 컨텍스트) 또는 javascript 이벤트 핸들러 속성 (html 속성 컨텍스트 내의 javascript 컨텍스트)과 같은 이중 컨텍스트의 경우 둘 다에 대해 인코딩해야합니다.

HTML 콘텐츠의 경우 DOMPurify를 사용하여 활성 콘텐츠를 선택적으로 삭제할 수 있지만 신뢰할 수없는 HTML 조각을 허용해야하는 경우 더 유효합니다.

+0

답변 해 주셔서 감사합니다. 프레임 워크? 예. 우리는 레거시와 다른 제 3 자의 숫자를 모두 가지고있는 위치에 있습니다. 일부 프로젝트는 jQuery를 사용하지 않습니다. 내가 자체 포함 된 라이브러리를 찾고 있었던 이유 중 하나. DOMPurify 주셔서 감사합니다. 더 자세히 조사하겠습니다. "정적 분석"을 사용하여 개발자가 올바른 작업을 수행 할 수있는 방법에 대한 생각이 있습니까? – user2684122

+1

JavaScript는 단순히 영숫자가 아닌 모든 문자에 대해'\ xNN '형식으로 인코딩됩니다. 이렇게하면 HTML 인코딩을 필요로하는 것으로 끝나지 않으므로 이중 인코딩 할 필요가 없습니다. 'javascript :'URL로 끝날 수있는 URL 매개 변수에주의하십시오. 여기서 동적 콘텐츠를 삽입해야하는 경우에는 http : // 및 https : //를 허용하십시오. – SilverlightFox

0

나는 스택 오버플로 답변의 숫자를 보았다 그러나 그들은 에게 확실 개발자가 라이브러리를 사용하기 위해 정적 테스트를 쓸 수있는 표준 라이브러리 의 완전한 정규화/인코딩 솔루션을 제공하지 않습니다.

이러한 이유는 각 응용 프로그램에만 해당되는 것이 아니라 각 응용 프로그램에 출력되는 각 변수에 특정한 것입니다. 귀하가 작성하는 테스트 스위트는 각 응용 프로그램에 따라 다르므로 조직의 모든 응용 프로그램이 정확히 동일한 기술, 방법론을 사용하지 않는 한 "단일 크기 적합"테스트를 작성할 수 없습니다. 및 프로세스. 제 경험상 문자 그대로 단 하나의 개발자가 아니면 통 합 수준을 달성 한 회사는 없습니다.

시도하려면 "정적 분석"을 사용하는 방법에 대한 의견이 있습니까? 개발자가 올바른 작업을 수행하도록하십시오.

Veracode, HP Fortify는 COTS의 두 가지 예입니다. 나는 그들이 여러 종류의 코드베이스를 검사 할 수 있다는 것을 알고있다. 그러나 이것들은 그들을 개발 사이클에 주입 시켜서 파이프 라인을 건설하는 것이 이상적입니다.

관련 문제