나는 이것에 대해 너무 많이 생각하고 있지만 데이터베이스에 웹 사이트 필드가 있다고 가정 해 봅시다. strip_tags를 사용하여 모든 HTML 태그를 제거했습니다. 사용자가이URL에 대한 Codeigniter 필터 출력 사용
자바 스크립트 입력한다면 : 경고 ('테스트')는 문자열이기 때문에
이 통과 얻을 것이다. 그런 다음 HTML이 생성됩니다.
<a href="<?php echo prep_url($website);?>">Website</a> //the code in view file
<a href="javascript:alert('test')">Website</a> //bad
클릭하면 자바 스크립트가 실행됩니다. prep_url이 작동하지 않음을주의하십시오.
의견이 있으십니까? HTMLPurifier를 살펴 봤지만 크기가 상당히 크고 중요한 변경 작업을 실제로하고 싶지 않습니다.
감사합니다.
HTML 태그가 필요 없기 때문에 strip_tags를 사용하고 있으며 URL은 문자열이 될 것입니다. http://www.google.com은 strip_tags와 관련이 없습니다. filter_var에 대해서도 숙고했습니다. URL 유효성을 검사하는 도우미를 만들 것입니다. 하지만 더 나아 졌나요? 사용자가 원하는대로 입력 할 수있게하고 출력에 필요한만큼 필터/추출을 수행하거나 엄격하고 예상치 못한 입력을 저장하지 않습니까? – Henson
그냥 불필요하며'http://example.com?q=
'은 strip_tags가 망가뜨릴 수있는 유효한 URL입니다. 'urlencode' 만 있으면됩니다. http://php.net/manual/en/function.urlencode.php 다른 질문까지 : "What 's better"는 당신이 원하는 일에 달려 있습니다. 사용자가 정말로 정크 URL을 입력하도록 하시겠습니까? 그런 다음 XSS 정리 함수를 사용하거나 HTMLPurifier를 다시 살펴 보겠습니다. 어쨌든, urlencode는' ">하지만 urlencode를 출력하면 유효한 URL이 전달되지 않습니까? 'http : // www.google.com'은 인코딩되며 더 이상 유효한 링크가 아닙니다. – Henson