簡單PHP防注入內容過濾方法

來源:互聯網
上載者:User

方法一,過濾一些沒用的內容

過濾沒用的資訊比較嚴格,有用的可能也輸入不進去,可以從網上找找其他的過濾方法:

 代碼如下 複製代碼

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(
" ",
"<\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>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.