DB에 보관하기 전에 또는 렌더링하기 전에 HTML을 소독합니까? (ASP.NET의 Antixss 라이브러리)

StackOverflow https://stackoverflow.com/questions/2060923

문제

사용자가 데이터베이스에 저장되고 웹 페이지에 렌더링되는 HTML을 추가 할 수있는 편집기가 있습니다. 이것은 신뢰할 수없는 입력이므로 사용할 계획입니다. Microsoft.Security.Application.AntiXsSS.GetSafeHtmlFragment HTML을 소독합니다.

  • 데이터베이스에 저장하기 전에 또는 신뢰할 수없는 입력을 웹 페이지에 렌더링하기 전에 산티 화해야합니까?
  • DLL 대신 내 프로젝트에 Antixss 소스 코드를 포함시키는 데 이점이 있습니까? (아마도 흰색 목록을 사용자 정의 할 수 있습니까?)
  • getSafehtmlfragment의 실제 구현을 위해 어떤 클래스 파일을 찾아야하는지
도움이 되었습니까?

해결책

나는 두 가지 이유로 선택된 답변에 동의하지 않습니다

  1. 인코딩 된 데이터를 저장 한 경우 저장하기 전에 인코더를 선택해야합니다. HTML로서 무언가를 저장했지만 JSON 응답 또는 XML 문서의 일부로 다른 형식으로 푸시하려는 경우 어떻게됩니까? 이제 Decode에 대한 HTML 인코딩 형식이있어서 올바른 형식으로 인코딩해야합니다.
  2. 인코더에서 버그를 발견하고 새 버전을 푸시하면 어떻게됩니까? 이제 출력 지점에서 인코딩하지 않기 때문에 모든 이전 데이터에는 잘못 인코딩 된 것들이 포함될 수 있습니다. 다시 인코딩 할 수는 있지만 올바르게 필터링 할 수있는 이중 인코딩 문제를 누르십시오.

일반적으로 출력 지점에서 인코딩하고 데이터 저장소에서 나오는 데이터를 기본적으로 신뢰할 수없는 것으로 처리합니다. 결국 누군가가 데이터베이스를 직접 또는 SQL 주입을 통해 편집 할 경우 어떻게해야합니까?

다른 팁

말을 듣습니다 XSS의 Jeff Williams와 OWASP 팟 캐스트 67. 그는 저장 전에 소독하거나 인코딩하지 않는 것에 대해 이야기합니다. 주된 이유는 새로운 취약점에 응답하여 (시기) 라이브러리가 진화하는 경우 이전 버전에 데이터가 멈출 수 있기 때문입니다. 물론 이것은 진입 점에서 화이트리스트에 대한 입력을 실행하는 것을 막고 허용 가능한 범위 외부의 것을 거부하지 않습니다.

  • 둘 다
  • 당신이 그것을 변경할 계획 인 경우에만 개인적으로하지 않을 것입니다.
  • Antixss 클래스 (AS라고 불리기 때문에 AntiXss.GetSafeHtmlFragment())

페이지 지시서에서 매개 변수를 사용할 수 있습니다. validateRequest = "true". 이러한 방식으로 모든 요청 데이터가 검증되며 유효성 검사 문제가 있으면 언제든지 오류를 포착 할 수 있습니다. 또한 SQL 주입 스레드와 다른 XSS뿐만 아니라 다른 것들을 방지합니다.

숫자 데이터를 사용하면 int32.tryparse () 또는 다른 tryparse 제품군 (byte.tryparse int16.tryparse ...)을 사용하여 정수 오버플로 또는 오용을 검증 할 수 있습니다.

다른 클래스 또는 추가 소독제 방법을 사용할 필요가 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top