Mysql防sql注入原理與方法

方法一:特殊字符轉義

Mysql中的特殊字符如下:

特殊字符 轉議字符 特殊意義
\0 \\0 字符串結束符NULL
\’ 單引號
" \" 雙引號
\b \\b 退格
\n \\n 換行
\r \\r 回車
\Z \\Z Control+Z
\ \\ 反斜槓
% \% 百分號,模糊查詢中匹配任意個任意字符
_ \_ 百分號,模糊查詢中匹配任意個任意字符
  • 使用mysql C API提供了mysql_real_escape_string函數對轉義字符進行處理
  • 開啓php的魔術模式,使magic_quotes_gpc = on

而對於%和_這2個只在模糊查詢條件中有特殊含義,而在普通字符串中沒有其他含義的字符,需要根據字符使用在SQL語句中的具體位置來決定是否需要處理。。

方法二:預處理語句

  • 使用PDO

    $pdo->prepare(‘SELECT * FROM users WHERE username = :username’);
    $pdo->execute(array(’:username’ => $_GET[‘username’]));

  • 使用mysqli

    $query = $mysqli->prepare(‘SELECT * FROM users WHERE username = ?’);
    $query->bind_param(‘s’, $_GET[‘username’]);
    $query->execute();

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章