XSS 취약성을 방지하기위한 조치 (트위터의 며칠 전)

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

  •  03-07-2019
  •  | 
  •  

문제

트위터와 같은 유명한 사이트조차도 XSS 취약성으로 고통 받고 있습니다. 이런 종류의 공격을 막기 위해 어떻게해야합니까?

도움이 되었습니까?

해결책

당신이 할 수있는 #1은 쿠키를 HTTP로만 설정하는 것입니다. 최소한 세션 쿠키 납치로부터 보호합니다. 자신의 사이트를 관리 할 때 쿠키를 훔치는 사람처럼.

나머지는 모든 사용자 입력을 검증하는 데 따릅니다.

  • 규칙 #0- 허용 위치를 제외하고 신뢰할 수없는 데이터를 삽입하지 마십시오.
  • 규칙 #1 -HTML 요소 콘텐츠에 신뢰할 수없는 데이터를 삽입하기 전에 HTML 탈출
  • 규칙 #2- 신뢰할 수없는 데이터를 HTML 공통 속성에 삽입하기 전에 속성 탈출
  • 규칙 #3- 신뢰할 수없는 데이터를 HTML JavaScript 데이터 값에 삽입하기 전에 JavaScript 탈출
  • 규칙 #4- 신뢰할 수없는 데이터를 HTML 스타일 속성 값에 삽입하기 전에 CSS 탈출
  • 규칙 #5- 신뢰할 수없는 데이터를 HTML URL 속성에 삽입하기 전에 URL 탈출

매우 긴 주제는 여기에서 자세히 설명합니다.

http://www.owasp.org/index.php/xss_(cross_site_scripting)_prevention_cheat_sheet

http://www.owasp.org/index.php/cross_site_scripting

XSS는 많은 익스플로잇 중 하나 일 뿐이며 모든 웹 개발자

http://www.owasp.org/index.php/top_10_2007

다른 팁

준비된 명령문을 사용하여 SQL 주입을 비 문제로 만들 수있는 것처럼, 비슷한 일을하는 템플릿 엔진 (DOM Serializer)을 사용하여 XSS 비 문제를 만들 수 있습니다.

모든 출력이 템플릿 엔진을 통해 진행되도록 애플리케이션을 설계하십시오. 해당 템플릿 엔진 HTML-ESCAPES 모든 데이터를 기본적으로 만듭니다. 이렇게하면 기본적으로 안전하고 HTML의 탈출에 부지런한 인간 (및 나머지)에 의존하지 않는 시스템이 있습니다.

나는 당신이 당신의 코드를 쓰는 것을 가지고 있지 않지만, 당신의 사용 ASP.net을 사용하는 경우, 당신은 부분적으로 덮여 있습니다. ASP.NET은 활성화되면 사용자 입력을 통해 악의적 인 스크립트가 도입되는 것을 방지하는 요청 유효성 검사를 호출하는 것을 가지고 있습니다.

그러나 때로는이 질문에 입력 한 것과 같은 종류의 텍스트 편집기를 허용해야합니다. 이 경우 최종 사용자가 "리치 텍스트"HTML을 입력 할 수 있도록 요청 유효성 검사를 부분적으로 비활성화해야합니다. 이 경우 흰색 목록 필터링 메커니즘을 구축해야합니다.

참고로, 나는 다른 사람들에 대해 모르지만 Microsft에는 anti-xss라는 라이브러리가 있습니다.

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