我开始考虑保护我的输入免受 SQL 注入。我已经阅读了 PDO 和 mysqli 并将使用这些技术。当我在研究针对 SQL 注入的保护时,我想到了一种技术。每当我有来自用户的输入时,我都可以扫描输入字符串并搜索出现的“'”或“DROP”,如果字符串包含这些字符,那么我就无法继续。这种技术会阻止大量的 SQL 注入吗?
谢谢你的帮助。
我开始考虑保护我的输入免受 SQL 注入。我已经阅读了 PDO 和 mysqli 并将使用这些技术。当我在研究针对 SQL 注入的保护时,我想到了一种技术。每当我有来自用户的输入时,我都可以扫描输入字符串并搜索出现的“'”或“DROP”,如果字符串包含这些字符,那么我就无法继续。这种技术会阻止大量的 SQL 注入吗?
谢谢你的帮助。
最好使用事先经过严格测试的方法,不要尝试自己实现。
您想要的解决方案的一个问题是,当 SQL 添加一个用于删除表的新符号时会发生什么?或者如果他们改用“截断”怎么办?这不是万无一失的。
只需使用 PDO 或 SQLi。
如果正确使用并按预期使用,两者都会阻止它;使用停止单词 DROP 之类的措施会很愚蠢——想象一下,例如,如果有人键入“dropbox”?
您应该转义您的输入,并考虑使用准备好的语句。这将消除几乎所有的 SQL 注入弱点。扫描特定单词是一种糟糕的做法,因为它通常会惹恼合法用户,并且不会阻止坚定的黑客。
尝试仅使用准备好的语句。这是有史以来最好的技术之一。
最好的方法是根据严格的模式验证所有用户输入,以确保没有用户数据异常,以及 PDO 准备好的语句 - 这样您也可以防止 XSS,但通常也有利于清理所有用户生成的输出,以防万一您没有正确验证某些内容,并且用户能够执行恶意代码。