我已经对注入/ XSS攻击如何工作做了一些研究。看起来黑客只是简单地使用USER INPUT字段来输入代码。SQL注入/ XSS攻击可能与preg_replace?
但是,假设我只用字母数字(a-zA-Z0-9)和preg_replace限制每个USER INPUT字段,并假设我使用即将被弃用的my_sql而不是PDO或my_sqli。
黑客仍然能够注入/破解我的网站吗?
谢谢!
我已经对注入/ XSS攻击如何工作做了一些研究。看起来黑客只是简单地使用USER INPUT字段来输入代码。SQL注入/ XSS攻击可能与preg_replace?
但是,假设我只用字母数字(a-zA-Z0-9)和preg_replace限制每个USER INPUT字段,并假设我使用即将被弃用的my_sql而不是PDO或my_sqli。
黑客仍然能够注入/破解我的网站吗?
谢谢!
简短版本:不要这样做。
龙版本:
假设你有
SELECT * FROM my_table WHERE id = $user_input
如果发生这种情况,那么一些输入(如CURRENT_TIMESTAMP
)仍然是可能的,但在“攻击”将仅限于点可能是无害的。这里的解决方案可以将输入限制为[0-9]
。
在字符串("$user_input"
)中,问题不应该存在。
但是:
á
?如果我想引用""
?用<
写一个数学表达式(甚至写一些明显无害的东西,例如i <3 u
)?所以,现在你有:
您正在关注解决已经解决的问题。为什么浪费时间做一些需要时间来开发的东西,而当其他人已经开发出适合使用的适当解决方案时,很难维持。
最后,don't use deprecated APIs。由于某种原因,物品已被弃用。弃用可能意味着像“我们会在任何时候放弃支持”或“这有严重问题,但由于某种原因我们无法解决”。
弃用的API应该被那些没有足够的时间或资源进行迁移的开发者的遗留应用程序使用。从头开始时,请使用支持的API。
这是对问题最糟糕的解决方案。你知道还有什么可行的吗?停止接受任何用户输入。 – meagar
哈哈是的我明白,这不是最优化的解决方案。但是,如果我的网站非常简单,只需要用户输入字母数字呢?所以从理论上讲,这是正确的?如果所有的用户输入都受到限制,不用担心黑客入侵。 – moshimoshi
你仍然在以错误的方式解决它。仅仅因为它在狭义的环境下工作并不意味着这是一个很好的解决方案。只需使用为此问题明确提供的解决方案,该解决方案可在任何地方使用*,以便所有开发人员都了解。 – meagar