2009-09-11 6 views
2

캐슬 프로젝트는 기능이 풍부하고 멋진 서브 프로젝트를 포함하고 있으며 개발이 즐거웠습니다.NVELocity에서 XSS를 처리하는 방법

저희 팀은 EAM으로 주문 제작을 거의 준비했으며 시스템을 연마하고 있습니다. 우리는 몇 가지 기본적인 XSS 공격을 시도하고 추측했습니다. 모두 작동했습니다.

인트라넷 환경에서 실행되지만 사용자가 우연히 전체 시스템을 손상시키는 것을 원하지 않으며 XSS 문제를 처리하기위한 솔루션을 연구하고 있습니다. 기본적으로

NVelocity 아무것도 탈출, 그래서이 코드하지 않습니다 필드를 같은 것들을 포함와

${entity.Field} 

:

<script>alert('xss!')</script> 

우리에게 좋은 XSS 경고를 줄 것이다.

Microsoft의 AntiXSS 라이브러리는 모양이 좋습니다. 가능한 여러 가지 유형의 XSS 벡터를 처리합니다. 우리는 AndyPike의 helper을 만났습니다. 그러나이 솔루션은 우리에게 몇 천 개의 라인을 리팩터링하게 만들 것입니다. 그래, 좋지 않아. 그리고 이것은 기존 엔티티를 편집 할 때 ActiveRecord/NVelocity 자동 바인드를 처리하지 않습니다.

질문 : 출력 인코딩 기술을 사용하여 성 프로젝트의 NVelocity 엔진을 패치 할 수 있습니까? 그들이 Brail과 같이했던 것처럼? 누구나 더 좋은 아이디어가 있습니까?

감사합니다.

추 신 : 성 프로젝트를 사용하는 Stackoverflowers은 그러한 패치를 사용합니까? 기본적으로

+0

그냥 빨리 참고 : FormHelper는 입력 필드에 값을 넣기 전에 HtmlEncondig 않습니다. – wtaniguchi

답변

1

NVelocity 아무것도에게

오 사랑하는 탈출하지 않습니다. 그런 다음 많은 코드 수정 작업을 수행해야합니다.

HTML에 삽입되는 텍스트를 이스케이프하지 못하는 것은 사실 이후에 수정할 수있는 실패가 아닙니다. 그렇습니다. 명백한 잘못된 입력을 걸러 낼 라이브러리가 있지만 문제를 숨기고있는 것은 아닙니다. 이상한 구문 구조 브라우저가 광범위하게 받아 들여지면 항상 잘못된 HTML을 몰래 가져 오는 방법이있을 것입니다. 동시에 거짓 긍정을 제공 할 것입니다. 예를 들어이 게시물은 태그 <script>에 대해 토론하기 위해 차단됩니다.

실제 문제를 해결할 수있을 때까지는 임시로 고집하는 석고입니다.

+0

"예"라고하면 무슨 뜻입니까, 게시물이 차단됩니까? HTML에 삽입 할 때 값을 이스케이프하면 거의 여기에서 얻을 수있는 것과 똑같이 나타납니다. 그렇지 않니? – wtaniguchi

+0

예. 텍스트를 HTML에 추가 할 때 텍스트를 이스케이프하면 제대로 처리 할 수 ​​있습니다.내 말뜻은 SO가 틀린 일을하고 (NVelocity처럼), 'anti-XSS'입력 필터 중 하나를 사용하여이를 막으려 고 시도했다면 블로킹이나 mangling과 같은 부정적인 부작용이있을 것입니다 우리와 같은 유효한 사용자 입력은'

관련 문제