这是 SQL 预防注射的好方法吗
Is this a good way for SQL injection prevention
我在其他网站和论坛上也阅读了很多关于如何防止 SQL 注入的内容。唯一的问题是,这让我对在向数据库写入内容时如何保护您的网站感到非常困惑。
我正在创建一个 schol 项目,用户的大量输入将被写入数据库,我目前正在通过 javascript 检查它们是否包含非法字符。然后我使用 ajax 激活我的控制器,使用我模型中的查询将它发送回视图。
但是让我们继续解决我的问题。
如果我首先使用 javascript 验证输入,(客户端),然后使用 PHP 验证服务器端。如果我首先检查 php 输入是否包含诸如 * '' `` > < 之类的非法字符。您将在查询中使用什么从数据库中获取信息。然后逃避 whitescpases 因为我不想在用户输入时在网站上有空格的东西。
然后在输入上使用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 like * < > ' #
3 > 使用 mysqli_real_escape_string()
4 > 到PDO查询
这是预防SQL注入的好方法吗,我真的不想用SQL注入来发送我的学校项目直播哈哈。
你好,
也非常感谢您阅读我的长篇小说
- 没有。禁止字符会阻止人们使用它们,并且通常有正当理由使用它们。如果字符出现在数据中没有意义,那么您可以过滤它们以帮助保持数据的完整性。不要将其作为安全措施。
- 同上
- 没有。参数化查询更好。
- 是的,但不能与
mysqli_real_escape_string
结合使用,因为您不应该混合使用 API,如果您同时使用两者,您将 double 转义并放入 \
数据中的字符。
我在其他网站和论坛上也阅读了很多关于如何防止 SQL 注入的内容。唯一的问题是,这让我对在向数据库写入内容时如何保护您的网站感到非常困惑。
我正在创建一个 schol 项目,用户的大量输入将被写入数据库,我目前正在通过 javascript 检查它们是否包含非法字符。然后我使用 ajax 激活我的控制器,使用我模型中的查询将它发送回视图。
但是让我们继续解决我的问题。
如果我首先使用 javascript 验证输入,(客户端),然后使用 PHP 验证服务器端。如果我首先检查 php 输入是否包含诸如 * '' `` > < 之类的非法字符。您将在查询中使用什么从数据库中获取信息。然后逃避 whitescpases 因为我不想在用户输入时在网站上有空格的东西。
然后在输入上使用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 like * < > ' #
3 > 使用 mysqli_real_escape_string()
4 > 到PDO查询
这是预防SQL注入的好方法吗,我真的不想用SQL注入来发送我的学校项目直播哈哈。
你好,
也非常感谢您阅读我的长篇小说
- 没有。禁止字符会阻止人们使用它们,并且通常有正当理由使用它们。如果字符出现在数据中没有意义,那么您可以过滤它们以帮助保持数据的完整性。不要将其作为安全措施。
- 同上
- 没有。参数化查询更好。
- 是的,但不能与
mysqli_real_escape_string
结合使用,因为您不应该混合使用 API,如果您同时使用两者,您将 double 转义并放入\
数据中的字符。