php防止sql語句注入常用方法:過濾法

來源:互聯網
上載者:User
關鍵字 網路程式設計 PHP教程

php防止sql語句注入常用方法:過濾法

<?
$id=$_GET["id"];
$query="SELECT * FROM my_table where id=‘".$id."‘"; 注入漏洞$result=mysql_query($query);
這裡很明顯我們可以用注入來獲得資料庫的其它內容了。
可以用下面的方法防止注入。
注入一樣的,大家可以看看以前的黑防。 然後我們看下面通過post方法獲取變數的處理:
$text1=$_POST["text1"];
$text2=$_POST["text2"];
$text3=$_POST["text3"];
這些資料得到後要是直接寫入資料庫,肯定會存在很大的漏洞。

漏洞解決:
這個漏洞的解決方法其實很簡單,就是嚴格對全部提交的變數進行過濾。 對一些敏感的字元進行替換。 我們可以借助PHP提供的htmlspecialchars()函數來替換HTML的內容。 這裡給出一段例子:
構造過濾函數
function flt_tags($text)
{
$badwords=array("敏感詞1","敏感詞2"); 詞彙過濾清單把那你認為敏感的字寫在裡面
$text=rtrim($text);
foreach($badwords as $badword) //這裡進行詞彙的過濾
{
if(stristr($text,$badword)==true){ die("錯誤:你提交的內容含有敏感字眼,請不要提交敏感內容。 "); }
}
$text=htmlspecialchars($text); HTML替換
這兩行把回車替換為

$text=str_replace(" "," ",$text);
$text=str_replace(" ","",$text);
$text=str_replace("&line;","│",$text); 文本資料庫分隔符號"&line;" 替換為全形的"│"
$text=preg_replace("/s{ 2 }/"," ",$text); 空格替換
$text=preg_replace("/ /"," ",$text); 還是空格替換
if(get_magic_quotes_gpc()){ $text=stripslashes($text); } //如果magic_quotes開啟,則進行‘的替換
return $text;
}

$text1=$_POST["text1"];
$text2=$_POST["text2"];
$text3=$_POST["text3"];

過濾後的資料
上面資料通過過濾後,就可以直接用啦,基本是安全的。

?>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.