mysql防注入攻擊解決辦法


  • magic_quotes_gpc函數在php中的作用是判斷解析用戶提示的數據,如包括有:post、get、cookie過來的數據增加轉義字符“\”,以確保這些數據不會引起程序,特別是數據庫語句因為特殊字符引起的污染而出現致命的錯誤。在magic_quotes_gpc=On的情況下,如果輸入的數據有單引號(’)、雙引號(”)、反斜線()與 NUL(NULL 字符)等字符都會被加上反斜線。這些轉義是必須的,如果這個選項為off,那么我們就必須調用addslashes這個函數來為字符串增加轉義。

  • stripslashes() 函數刪除由 addslashes() 函數添加的反斜杠。

  • mysql_real_escape_string() 函數轉義 SQL 語句中使用的字符串中的特殊字符。

下列字符受影響:

    \x00
    \n
    \r
    \     '
    "
    \x1a

如果成功,則該函數返回被轉義的字符串。如果失敗,則返回 false。

防止注入攻擊:

<?php function check_input($value) { // 去除斜杠 if (get_magic_quotes_gpc()) { $value = stripslashes($value); } // 如果不是數字則加引號 if (!is_numeric($value)) { $value = "'" . mysql_real_escape_string($value) . "'"; } return $value; } $con = mysql_connect("localhost", "hello", "321"); if (!$con) { die('Could not connect: ' . mysql_error()); } // 進行安全的 SQL $user = check_input($_POST['user']); $pwd = check_input($_POST['pwd']); $sql = "SELECT * FROM users WHERE user=$user AND password=$pwd"; mysql_query($sql); mysql_close($con); ?>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM