2014-06-18 16 views
1

나는이 URL을 검증하기 위해 사용하고 있습니다 :PHP : FILTER_VALIDATE_URL은 (는) URL의 유효성을 검사해도 안전합니까?

if(!filter_var($website, FILTER_VALIDATE_URL)) { 
// invalid url 
} else 
    //url valid 

이 안전한가요? 이것을 읽은 후 : http://www.d-mueller.de/blog/why-url-validation-with-filter_var-might-not-be-a-good-idea/ 나는 두려워하지 않습니다.

그래서 제공된 솔루션 안전?

function validate_url($url) 
{ 
    $url = trim($url); 

    return ((strpos($url, "http://") === 0 || strpos($url, "https://") === 0) && 
      filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED | FILTER_FLAG_HOST_REQUIRED) !== false); 
} 
+0

"안전"을 정의하십시오 ... –

+0

크로스 사이트 스크립팅, SQL injetcion (PDO를 사용하고 있음) 등이 있습니다. – yoshi

답변

0

이 문서는이 문제를 언급하지 않는다, 그러나 반환 값은 URL의 소독 복사본입니다.

e.e. 당신이 filter_var()의 반환 값으로 작업하는 경우

<?php 
echo filter_var('http://example.com/exploit.html?<script>alert(1);</script>', FILTER_VALIDATE_URL); 
//http://example.com/exploit.html? 

그래서, 당신은 filter_var()에 공급되는 URL 작업을보다 안전하다.