2010-07-15 4 views
2

을 공격 제 기능입니다 즉 <a href="<?php echo $url; ?>">PHP의 filter_var 여기

로 전환하는 경우
http://blah.com"onclick="alert(document.cookie) 

는 상상

정규식에 더 나은 URL 유효성 검사기가 있습니까? 또는 실제로 유효한 URL로 테스트하고있는 URL입니다 (이 경우 XSS 정리 기능이 필요합니다).

답변

2

이 내장 filter있다 :

filter_var($url, FILTER_VALIDATE_URL); 

이것은 당신의 예를 URL로 false을 반환합니다. 유효하면 $url을 반환합니다. 예 :

 
[email protected]:~$ php -r "var_dump(filter_var('http://blah.com\"onclick=\"alert(document.cookie)', FILTER_VALIDATE_URL));" 
bool(false) 

어쨌든 XSS를 방지하는 방법은 htmlspecialchars을 사용하는 것입니다. 그렇지 않으면 사용자가 javascript: -like "URL을"포함 할 수 있기 때문에,

htmlspecialchars($data, ENT_QUOTES); 

그러나 당신은 또한 URL을 확인해야합니다 : 그것은 속성이기 때문에, 당신은 ENT_QUOTES를 사용해야합니다.

+0

내 코드 읽기 :/ – fire

+0

아 죄송합니다. 선이 너무 길어서 그 부분을 읽지 않았습니다. 그러나 어쨌든, 그것은 거짓을 반환합니다. – Artefacto

+0

http://pastebin.com/9Yvg7Gqn을 실행하여 bool (true)로 덤프를하면 어떻게 될지 이상합니다. – fire