您好,登錄后才能下訂單哦!
小編給大家分享一下php防sql注入原理是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
sql注入:就是通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。
預處理語句針對SQL注入是非常有用的,因為參數值發送后使用不同的協議,保證了數據的合法性。預處理看作是想要運行的SQL的一種編譯過的模板,它可以使用變量參數進行定制。
防御方法一
mysql_real_escape_string – 轉義SQL 語句中使用的字符串中的特殊字符,并考慮到連接的當前字符集 !
$sql = "select count(*) as ctr from users where username ='".mysql_real_escape_string($username)."' and password='". mysql_real_escape_string($pw)."' limit 1";
方法二:
打開magic_quotes_gpc來防止SQL注入。php.ini中有一個設置:magic_quotes_gpc =
Off這個默認是關閉的,如果它打開后將自動把用戶提交對sql的查詢進行轉換,比如把 ’ 轉為 '等,對于防止sql注射有重大作用。
如果magic_quotes_gpc=Off,則使用addslashes()函數。
方法三:
自定義函數
function check_param($value=null) { #select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile $str = 'select|insert|and|or|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile'; if(!$value) { exit('沒有參數!'); }elseif(eregi($str, $value)) { exit('參數非法!'); } return true; } function str_check( $value ) { if(!get_magic_quotes_gpc()) { // 進行過濾 $value = addslashes($value); } $value = str_replace("_", "\_", $value); $value = str_replace("%", "\%", $value); return $value; } function post_check($value) { if(!get_magic_quotes_gpc()) { // 進行過濾 $value = addslashes($value); } $value = str_replace("_", "\_", $value); $value = str_replace("%", "\%", $value); $value = nl2br($value); $value = htmlspecialchars($value); return $value; }
以上是php防sql注入原理是什么的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。