2008-09-15 5 views
1

웹 페이지에서 서식있는 텍스트 편집기를 사용하고 있습니다. .NET에는 HTML 태그를 게시하지 못하게하는 기능이 있으므로, JavaScript 스 니펫을 추가하여 꺽쇠 괄호를 변경하고 게시물 앞에서 한 쌍의 별칭을 변경했습니다. 별명은 서버에서 필요한 꺽쇠 괄호로 대체 된 다음 데이터베이스에 저장됩니다. XSS를 제쳐두고이 문제를 해결하는 일반적인 방법은 무엇입니까? (즉, 더 좋은 방법이 있습니까?)브라우저 WYSIWYG 모범 사례

XSS (교차 사이트 스크립팅)에 대한 의견이 있으시면 도움이 될 것입니다.

답변

3

실제로 "기능"을 사용 중지하는 방법이 있습니다. 이렇게하면 사용자가 원하는 문자를 게시 할 수 있으며 Javascript를 사용하여 문자를 별칭으로 변환 할 필요가 없습니다. disabling request validation에 대한이 기사를 참조하십시오. 즉, 자신의 유효성 검사를해야한다는 것을 의미하지만, 게시물의 소리에서 볼 때 어쨌든 당신이 찾고있는 것 같습니다. the instructions here을 따라 페이지 당 페이지를 비활성화 할 수도 있습니다.

1

첫 번째 의견은 자바 스크립트를 사용하여 꺾쇠 괄호를 변경하지 않는 것입니다. 이를 우회하는 것은 브라우저에서 JavaScript를 사용하지 않도록 설정하는 것만 큼 간단합니다. 거의 모든 서버 측 언어에는 HTML 문자를 엔티티 대응 물로 변환하는 유틸리티 메소드가 있습니다. 예를 들어, PHP는 htmlentities()를 사용합니다. .NET에는 동등한 유틸리티 메소드가 있습니다. 최소한, 괄호, 괄호 및 큰 따옴표는 정규 표현식으로 대체 할 수 있습니다. 그러면 보안 솔루션으로 나아갈 수있는 길이 멀어집니다.

3

가장 안전한 방법은 사용자가 WISYWIG로 태그를 만들 수 없도록하는 것입니다. 아마도이 사이트 또는 available here.과 같은 마크 다운 편집기와 같은 것을 사용하는 것이 다른 접근 방법 일 것입니다.

또한 요청에서 마크 업이 전송되지 않도록해야하는 Page 지시문 ValidateRequest = true를 유지하십시오. 물론이 오류가 발생하면이 오류를 처리해야합니다. 사람들은 항상 Tamper data과 같은 firefox 확장을 사용하여 요청에 태그를 삽입 할 수 있지만 ValidateRequest = true로 설정하면 ASP.NET이이를 받아들이지 못하게해야합니다.

XSS 공격에 대한 직설적 인 게시물이 최근 Jeff에 의해 작성되었습니다. 또한 쿠키를 HttpOnly로 만드는 것에 대해서도 설명합니다. 이는 쿠키 도용에 대한 반 방어책입니다. 행운을 빕니다!

+1

그래,하지만 Markdown의 유일한 문제점은 Markdown과 함께 * HTML 마크 업을 허용한다는 것입니다.이 때문에 상당히 힘들어집니다. –

+0

"위험한"HTML 태그를 명시 적으로 제거하는 방법은 무엇입니까? 사용할 수있는 라이브러리가 있습니까? – Shiv