我需要使用get函数从url中检索$ title变量。
$title=$_GET["title"];
$ title稍后将用于MySQL查询。
问题是如何使这个安全吗? 换句话说,如何抵消通过URL发送的任何恶意代码。
我需要使用get函数从url中检索$ title变量。
$title=$_GET["title"];
$ title稍后将用于MySQL查询。
问题是如何使这个安全吗? 换句话说,如何抵消通过URL发送的任何恶意代码。
(对于“secure”的值等于“以防止它打破数据库”):使用任何使用bound parameters的数据库API。
绑定参数倾向于让数据库处理转义(因此使用由数据库作者而不是语言作者编写的转义例程),并使用不太容易被遗忘的语法,然后手动转义每条输入数据(例如)mysql_real_escape_string
。
您可能需要在以后采取其他步骤,你在不同的上下文做对数据进行处理之前(例如,使其安全地插入到HTML文档)
您可以使用mysql_real_escape_string功能(转义特殊字符在SQL语句中使用的字符串)
必须使用mysql_real_escape_string(),以逃避可能与你的数据库干扰的所有字符。如果您显示此标题,您还应该使用htmlentities()或striptags()
使用查询参数。有许多不同的方法可以从PHP连接到mysql,并且它们使用参数的方式因框架而异。下面是使用PDO为例:
$dbh = new PDO('mysql:dbname=test;host=127.0.0.1', 'username', 'password');
$sth = $dbh->prepare("select * from table where title = :title")
$sth->execute(array(':title' => $_GET["title"]));
$rows = $sth->fetchAll();
var_dump($rows);
可能的重复http://stackoverflow.com/search?q=sanitize+php – Gordon
看看这个questin:http://stackoverflow.com/questions/4749588/protect-against-sql-injection – enricog