Ampersand에 입력하고 내 사이트를 엉망으로 만드는 사용자 W3C 유효성 검사

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

문제

내 소셜 네트워킹 사이트는 W3C XHTML 유효이지만 사용자는 블로그 보고서 및 내용을 게시 할 수 있으며 때로는 암페어 및 캐릭터를 입력하여 내 검증을 망칩니다. 이것을 어떻게 고칠 수 있고 내 검증을 망칠 수있는 다른 단일 문자가 있습니까?

도움이 되었습니까?

해결책

사용자가 생성 된 컨텐츠를 표시 할 때 htmlspecialchars () 기능.

다른 팁

일반적인 원칙의 문제로서 검증이나 필터링없이 사용자가 제출 한 (또는 실제로 외부) 컨텐츠를 페이지에 직접 포함시키는 것은 실수입니다. 유효성 검사 오류를 일으키는 것 외에도 "파손 된 페이지"와 큰 보안 구멍 (크로스 사이트 스크립팅 공격)을 유발할 수 있습니다.

데이터를 얻을 때마다 어딘가에 그것은 100% 신뢰할 수 없으며 어떤 식 으로든 안전하게 만들어야합니다. 일부 또는 전부를 수행 하여이 작업을 수행 할 수 있습니다.

  1. 탈출 특수 문자가 HTML 엔티티로 대체되도록 텍스트 데이터.
  2. 스트리핑 또는 필터링 안전하지 않은 HTML 태그.
  3. 검증 HTML에는 안전하지 않거나 불법적 인 구성이 포함되어 있지 않습니다.

사용자 입력이 텍스트로 해석 될 경우 대부분 옵션 1을보고 있습니다. 사용자가 HTML을 사용할 수있게하는 경우 옵션 2와 3을보고 있습니다. 네 번째 옵션은 사용자가 Markdown 또는 BBCode와 같은보다 제한적인 비 HTML 마크 업을 사용하여 해당 마크 업과 HTML을 사용하여 A를 사용하여 변환하는 것입니다. (희망적으로) 보안 구멍, 페이지 차단 구조 또는 기타 무서운 것들을 주입 할 수없는 라이브러리.

사용자가 HTML 마크 업을 입력 할 수 있도록하는 것은 나쁜 생각입니다.

이를 통해 모든 종류의 불쾌한 것들, 특히 XSS (Cross-Site Scripting) 악용 및 숨겨진 스팸 주입 (검색 엔진 봇이 아닌 숨겨진)이 가능합니다.

당신은 :

  • 모든 HTML 태그를 사용하여 말살하십시오 htmlspecialchars() 그리고 새로운 사람들 만 보존하십시오 nl2br(). 매우 구체적인 태그 (PHPBB 또는 Wiki와 같은 마크 업) 만 허용하는 고유 한 안전 마크 업을 구현하여 일부 서식을 허용 할 수 있습니다.

  • 사용 HTML 정화기 잠재적으로 위험한 모든 마크 업을 안정적으로 제거합니다. PHP strip_tags() 기능은 근본적으로 깨졌으며 화이트리스트 인수를 사용하는 경우 속성에서 위험한 코드를 허용합니다.

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