2017-09-27 4 views
0

내가 JSoupOWASP Java HTML sanitizer project 찾고 있어요 나쁜 용어를OWASP가 블랙리스트 트러스트 접근 방식과 달리 HTML을 허용 목록으로 만드는 이유는 무엇입니까?

업데이트되었습니다. API 레이어에 전달 된 사용자 입력을 위생적으로 처리하여 XSS 공격을 방지하기 위해 이러한 도구에만 관심이 있습니다. OWASP 프로젝트에 따르면

"AntiSamy의 단위 테스트에 95 % 이상의 합격을 더한 것"이라고되어 ​​있습니다.

하지만이 테스트를 어디에서 직접 볼 수 있는지는 알려주지 않습니다. 이 검사들은 무엇을 의미합니까? 더 간단히 말해서, 나는 왜 이러한 도구가 신뢰를 화이트리스트에 기본값으로 설정하는지 알고 싶습니다.

화이트리스트와 블랙리스트를 선택한 이유가 확실합니다. 나는 script과 같은 알려진 XSS 안전하지 않은 태그와 on* 같은 속성을 허용하고 싶지 않습니다. 블랙리스트 접근법조차도 가능하지 않습니다.

나는 추론이 무엇인지 알아야하며 테스트에 있다고 생각합니다. 예를 들어, style 태그를 허용하지 않는 이유는 무엇입니까? XSS 측면에서 위험한가요? 아니면 다른 이유로 존재합니까? (style은 XSS가 댓글에 언급 된 것처럼 안전하지 않을 수 있습니다. XSS attacks and style attributes)

다른 태그에 대한 XSS 안전하지 않은 근거가 더 필요합니다. 단위 테스트 자체는 누군가가 어디에서 찾을 지 안다면 충분해야합니다. 충분한 안전하지 않은 태그가 주어지면 화이트리스트 접근 방식이 필요한 이유를 알 수 있습니다.

+1

"블랙리스트"와 "화이트리스트"를 사용하면 나에게 혼란을줍니다. "블랙리스트"메커니즘은 기본적으로 모든 것을 허용하고 사용자가 금지하려는 것을 명시 적으로 나열하도록 요구합니다. "화이트리스트"는 기본적으로 모든 것을 거부하고 사용자가 허용하고 싶은 것을 나열하도록 요구합니다. OWASP Java HTML 살균기는 흰색 목록을 사용합니다. 모든 것이 기본적으로 거부되고 지정된 마크 업을 허용하여 정책을 작성합니다. – erickson

+0

@erickson - 알았어, 내 용어가 엉뚱한거야. 링크 주셔서 감사합니다, 그것은 매우 도움이됩니다. 앞서 언급 한 'AntiSamy의 단위 테스트'에 대한 링크를 제공 할 수 있다면이 질문에 100 % 답할 수 있습니다. –

답변

1

원래 antisamy 테스트는 AntiSamyTest (antisamy)입니다.

그들은 owasp에 맞게 AntiSamyTest (owasp)에 적응되었습니다.

그들은 예를 들어, 다른 HTML 조각에 대한 테스트가 포함

assertSanitizedDoesNotContain("<TABLE BACKGROUND=\"javascript:alert('XSS')\">", "background"); 

assertSanitizedDoesNotContain("<META HTTP-EQUIV=\"refresh\" CONTENT=\"0;url=data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K\">", "<meta"); 

좀 더 예에 대한 XSS Evasion Cheat Sheet를 참조하십시오.

블랙리스트를 시도했지만 블랙리스트를 우회하는 데 사용할 새로운 태그 또는 속성을 계속 찾았거나 잘못된 HTML 및 기타 인코딩이 우회 필터로 사용되어 블랙리스트가 비실용적이며 효과적이지 않았습니다. 이제 기본 가정은 태그, 속성 또는 스타일이 안전하다고 명시 적으로 지정되지 않은 경우 안전하지 않다는 것입니다. 이것은 우리가 이미 알고있는 xss 공격뿐만 아니라 새로운 tyes에 대해서도 보호합니다.

관련 문제