2013-06-18 4 views
0

나는하지 허용되는 문자의 배열이 있습니다메시지에 잘못된 문자가 포함되어 있는지 확인하십시오.

$array = ('<php', '<?', '?>', '<h', '<b>'); 

을 그리고 문자열 메시지가 있습니다. 그 문자열에 배열에 다음 단어가 들어 있지 않은지 어떻게 확인합니까?

기본적으로 저는 Ajax 채팅을 가지고 있는데 <b>hello</b>을 입력하면 텍스트가 굵게 표시됩니다. HTML을 허용하고 싶지는 않습니다. 어떻게 생각합니까?

+2

가 ['strip_tags']에서보세요 두 가지 기능을 사용할 수 있습니다 사용할 수 있습니다 HTML 태그를 사용하지 http://php.net/strip_tags). –

답변

2

당신은 strip_tags를 사용하여 모든 HTML 태그를 제거 할 수 있지만, 출력 HTML로 할 때, 당신은 항상 htmlspecialchars()를 사용해야합니다 그래서 그들은 생성에 영향을주지 않도록 특수 문자 등 >, <, 같은 인코딩 얻을 html.

그런데 검은 목록 접근 방식은 실패 할 것입니다. 사람들이 예를 들어 <script> 태그 등을 추가하면 어떻게 될까요? (html, db 등)로 출력하는 매체를 올바르게 인코딩 할 때는 여기서는 필요하지 않지만 일반적으로 화이트리스트 방식을 사용하는 것이 좋습니다. 당신이 웹 페이지에 표시되는

0

의 XML 인코딩 아무것도 ... 당신은 정말이를 제거 할 필요가 없습니다

0

. htmlspecialchars을 사용하는 경우 <&lt;>으로 인코딩 할 수 있습니다. &gt;으로 표시되므로 html이 바로 전달되지만 브라우저에서 렌더링되지 않습니다.

추가 사항 : jQuery를 사용하는 경우 .text(...)이 이러한 문제를 해결할 것임을 명심하십시오. .html(...)하지 않습니다. 브라우저에 html을 안전하게 출력하려면 .text(...)을 사용하십시오.

0

(당신이

$value = htmlentities($value); 

또는

$value = htmlspecialchars($value); 

당신이

$value = htmlspecialchars(htmlentities($value)); 
관련 문제