我如何在数据库中存储潜在的SQL注入攻击?
首先假设我检测到潜在的攻击,并在变量中包含违规攻击字符串,并希望将其添加到包含可疑事件日志的表中。
我需要做些什么才能将这些字符串安全地插入到数据库中,以便不会产生错误?
我觉得它会像htmlspecialchars和mysql_real_escape_string一样......但是我想把它扔出去看看是否有其他人有任何想法!
一种想法是将攻击存储为编码的base64值,但这看起来有点像hackish ......
仅供参考,我正在用PHP编写应用程序:)
非常感谢任何回复!
答案 0 :(得分:4)
始终使用参数化查询。如果您正在使用参数,则无需依赖转义字符串,您的查询将始终完全符合您的意图。
e.g:
$statement = $db->prepare('INSERT INTO table_name (field_name1, field_name2) VALUES (:value, :value2)');
$statement->execute(array(':value' => $value, ':value2' => $value2));
请参阅此处的PDO准备文档:
答案 1 :(得分:2)
使用mysqli预处理语句来存储查询,这是避免sql注入的最安全的方法。如果您要通过Web界面显示它们并关注XSS / CSRF攻击,请在显示之前使用htmlspecialchars()
。
答案 2 :(得分:0)
与存储任何其他数据的方式相同。
无论你怎么称呼它都没有什么特别的存储SQL注入攻击。
答案 3 :(得分:0)
答案 4 :(得分:-1)
我要做的就是通过简单的加密来运行它。 然后当你想显示可疑的sql时,你只需解密它。 这应该确保可疑的sql语句不会在你的数据库上执行。