我在这里已经阅读了很多关于如何在其他网站和论坛上阻止SQL注入的内容。唯一的问题就是这让我在将内容写入数据库时如何保护您的网站时非常困惑。
我正在创建作为schol项目的东西,其中有很多来自用户的输入将被写入数据库,我现在通过javascript检查它们是否包含iligal char。然后我使用ajax激活我的控制器,使用我的模型中的查询将其发送回视图。
但是让我们继续讨论我的问题。
如果我首先使用javascript(客户端)验证输入,然后使用PHP验证服务器端。如果我首先检查php是否输入包含像*'' ``> <,那种事情。您在查询中用于从数据库中获取信息的内容。然后逃避白人问题,因为我不希望在用户输入的网站上有空格。
然后在输入上使用mysqli_real_escape_string()
。然后将其发送到看起来像这样的查询。
/**
* @param string
* @param string
* @return mixed
*/
public function updateUsername($oldUsername, $newUsername) {
return $this->_db->query("UPDATE `users` SET `username` = :new_username WHERE `username` = :old_username",
[':new_username' => $newUsername,':old_username' => $oldUsername]);
}
所以
1>使用javascript检查
2>通过php检查char就像*< > ' #
3>使用mysqli_real_escape_string()
4>到PDO查询
这是防止SQL注入的好方法,我真的不想用SQL注入实时发送我的学校项目哈哈。
格尔茨,
还要感谢阅读我的长篇故事
答案 0 :(得分:2)
mysqli_real_escape_string
结合使用,因为您不应该混用API,如果您同时使用这两种API,那么 double 会转义并放入\
个字符你的数据。