国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

php - 如何安全過濾用戶提交的數據提交到數據庫
巴扎黑
巴扎黑 2017-04-10 14:28:00
0
2
514

sql注入總是無孔不入(ps:' or 1=1#),該如何安全的過濾好呢(我用的php和mysql_connect)?

巴扎黑
巴扎黑

reply all(2)
劉奇

可以使用 mysql_real_escape_string() 對字符串進行轉義,然后再放進 SQL。

$name = mysql_real_escape_string($_POST['name']);
mysql_query('SELECT * FROM `users` WHERE `name` = "'.$name.'"');

//改進版。防 SQL 注入,同時屏蔽 _ 和 % 字符
function escape($str) {
  $str = mysql_real_escape_string($str);
  $str = str_replace(['_', '%'], ['\\_', '\\%'], $str);
  return $str;
}

這里有官方介紹:http://www.php.net/manual/zh/function.mysql-real-escape-string.php


個人建議還是使用一個WEB框架,常見的WEB框架都有完善的防注入機制。
例如:
簡單、快速入門的:CodeIgniter
功能更全面的:Yii (這個官網有時會被墻)

Ty80
select * from users where name = @name

參數化查詢(Parameterized Query 或 Parameterized Statement)是訪問數據庫時,在需要填入數值或數據的地方,使用參數 (Parameter) 來給值。

在使用參數化查詢的情況下,數據庫服務器不會將參數的內容視為SQL指令的一部份來處理,而是在數據庫完成SQL指令的編譯后,才套用參數運行,因此就算參數中含有指令,也不會被數據庫運行。Access、SQL Server、MySQL、SQLite等常用數據庫都支持參數化查詢。

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template