2010-07-29 10 views
0
function validCleanHtml($unclosedString) 
{ 
    preg_match_all("/<([^\/]\w*)>/", $closedString = $unclosedString, $tags); 
    for ($i = count($tags[1]) - 1; $i >= 0; $i--) 
    { 
     $tag = $tags[1][$i]; 
     if (substr_count($closedString, "</$tag>") < substr_count($closedString, "<$tag>")) 
      $closedString .= "</$tag>"; 
    } 
    $validTags = "<em><strong>"; 
    $validClosedString = strip_tags($closedString, $validTags); 
    return $validClosedString; 

} 

ok 내가 원하는 것은 2 html, em 및 strong을 활성화하는 것입니다. 이것은 xss에서 안전합니까? 만약에 우리가 그것을 어떻게 확보 할 수 있겠습니까?안전한 HTML PHP로 필터링?

답변

4

나는 strip_tags가 답을 가지고 있다고 생각합니다.

http://us2.php.net/strip_tags

오히려 특정 필드를 수 있도록보다, 당신은 또한 당신이 원하지 않는 것들을 제거 할 수 있습니다. 즉 : linkstylescriptiframeframe

+0

많은 작업이 있습니다. 감사합니다 친구 –

+2

@ 아담, @ jasonbar의 대답도 고려하시기 바랍니다. 'strip_tags'보다 [우수한 필터링 옵션] (http://htmlpurifier.org/comparison#striptags)을 제공합니다. – Charles

12

당신은 htmlpurifier 같은 기존 솔루션 봤어? 자신 만의 HTML 파서를 쓰고 싶지는 않습니다. 물론 정규 표현식을 쓰는 것도 아닙니다.

+0

나는 이런 식으로 safehtml로가는 길이라고 생각한다. 휠을 다시 발명 할 필요는 없다고 생각합니다. 정확히이 질문의 원래 포스터가 찾고자하는 것이 아닐지라도, 정확히 내가 찾고 있었던 것입니다. – FernandoZ