Nếu bạn làm website tương tác 2 chiều giữa user với nhau thì có thể sẽ bị trường
hợp này, đó là XSS(Cross Site Scripting) nôm na là người dùng sẽ nhập các tag đặc biệt.
Vidu: <script type="text/javascript" src="/template/adsense/js/swfobject.js"></script>
trong code .js này sẽ thực thi đoạn code gì đó thì có mà chết.
Vậy vấn đề của chúng ta là không cho nhập hoặc hiện thị, hoặc không lưu nó vào csdl.
Cách 1: Dùng strip_tags() đặc biệt của function này là sẽ cho phép các tag nào
được sử dụng:
<?php $text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>'; echo strip_tags($text); echo "\n";
// Allow <p> and <a> echo strip_tags($text, '<p><a>'); ?>
Cách 2: Sẽ bỏ các tag nào được liệt kê:
<?php function strip_only($str, $tags) { if(!is_array($tags)) { $tags = (strpos($str, '>') !== false ? explode('>', str_replace('<', '', $tags)) : array($tags)); if(end($tags) == '') array_pop($tags); } foreach($tags as $tag) $str = preg_replace('#</?'.$tag.'[^>]*>#is', '', $str); return $str; }
$str = '<p style="text-align:center">Paragraph</p> <strong>Bold</strong><br/> <span style="color:red">Red</span><h1>Header</h1> <script type="text/javascript" src="/zend/mvc/public/templates/webadmin/system/js/ddaccordion.js"> </script>';
echo strip_only($str, array('script')); echo strip_only($str, '<p><h1>'); ?>
|