內容過濾多是為了防止一些安全注入或者是跨域操作了,下面我們一起來看看我整理的幾個簡單的防注入內容過濾程序代碼,希望文章對各位同學會有所幫助.
方法一,過濾一些沒用的內容
過濾沒用的信息比較嚴格,有用的可能也輸入不進去,可以從網上找找其他的過濾方法,代碼如下:
- function checkHtml($data){
- $ret = preg_match("/['.,:;*?~`!@#$%^&+=)(<>{}]|]|[|/|/|"||/",$data);
- if ($ret == 1) {
- return false; exit;
- } else {
- return true;
- }
- }
例2,過濾一些html標簽,代碼如下:
- function uh($str)
- {
- $farr = array(
- "/s+/", //過濾多余的空白
- "/<(/?)(scripti?framestylehtmlbodytitlelinkmeta?%)([^>]*?)>/isU", //過濾 <script 等可能引入惡意內容或惡意改變顯示布局的代碼,如果不需要插入flash等,還可以加入<object的過濾
- "/(<[^>]*)on[a-zA-Z]+s*=([^>]*>)/isU", //過濾javascript的on事件
- );
- $tarr = array(
- " ", //開源代碼Vevb.com
- "</1/2/3>", //如果要直接清除不安全的標簽,這里可以留空
- "/1/2",
- );
- $str = preg_replace( $farr,$tarr,$str);
- return $str;
- }
方法三,上面兩種方法都是把要過濾內容放在了程序中,下面我把要過濾的內容放到一個txt文本,只要讀文件內容進行判斷即可,這樣方便維護要過濾的內容,代碼如下:
- <?php
- if($_POST)
- {
- //獲取文件內容轉為數組兩種方法:
- /*
- $fcon = file_get_contents("./filter.txt");
- $filter_word = explode("n",$fcon);
- */
- $filter_word = file("./filter.txt");
- //$filter_word = array("test1","test2","test3","test4");
- $str = $_POST["mess"];
- for($i=0;$i<count($filter_word);$i++)
- {
- if(preg_match("/".(trim($filter_word[$i]))."/i",$str))
- {
- echo "<script>alert('您輸入的內容含非法內容,請重輸!');</script>";
- echo "<a href='index.php'>返回</a>";
- exit;
- }
- }
- echo "您輸入的內容是:".$str;
- }
- ?>
- <h2>測試過濾是否生效:</h2>
- <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
- <p><textarea name="mess" cols="40" rows="4"></textarea></p>
- <p><input type="submit" name="sub" value="send"></p>
- </form>
新聞熱點
疑難解答