在 php 中防止 sql 注入
preventing sql injection in php
如果用户输入是在未修改 SQL query
的情况下插入的,则应用程序容易受到 SQL injection
的攻击,如以下示例所示:
$unsafe_variable = $_POST['user_input'];
mysql_query("INSERT INTO `table` (`column`) VALUES ('$unsafe_variable')");
那是因为用户可以输入类似值 '); DROP TABLE table;--,
的内容,查询变为:
INSERT INTO `table` (`column`) VALUES('value'); DROP TABLE table;--')
如何防止这种情况发生?
通过简单的 Google 搜索可以找到 广泛的 信息,可以指导您朝着正确的方向前进。不过要开始:
不要使用我的SQL_* 函数 这些是 deprecated 并且会产生警告。它们 甚至不是现代 Web 开发的好实践 。
使用数据库库代替,如PDO or MySQLi。有很多教程可以帮助您入门,最重要的是这些库 会为您处理 SQL 注入 。所以使用它们!
如果用户输入是在未修改 SQL query
的情况下插入的,则应用程序容易受到 SQL injection
的攻击,如以下示例所示:
$unsafe_variable = $_POST['user_input'];
mysql_query("INSERT INTO `table` (`column`) VALUES ('$unsafe_variable')");
那是因为用户可以输入类似值 '); DROP TABLE table;--,
的内容,查询变为:
INSERT INTO `table` (`column`) VALUES('value'); DROP TABLE table;--')
如何防止这种情况发生?
通过简单的 Google 搜索可以找到 广泛的 信息,可以指导您朝着正确的方向前进。不过要开始:
不要使用我的SQL_* 函数 这些是 deprecated 并且会产生警告。它们 甚至不是现代 Web 开发的好实践 。
使用数据库库代替,如PDO or MySQLi。有很多教程可以帮助您入门,最重要的是这些库 会为您处理 SQL 注入 。所以使用它们!