我对注入/XSS 攻击的工作原理进行了一些研究。似乎黑客只是利用 USER INPUT 字段来输入代码。
但是,假设我使用 preg_replace 限制每个 USER INPUT 字段只有字母数字(a-zA-Z0-9),并假设我使用即将被弃用的 my_sql 而不是 PDO 或 my_sqli。
黑客仍然能够注入/破解我的网站吗?
谢谢!
我对注入/XSS 攻击的工作原理进行了一些研究。似乎黑客只是利用 USER INPUT 字段来输入代码。
但是,假设我使用 preg_replace 限制每个 USER INPUT 字段只有字母数字(a-zA-Z0-9),并假设我使用即将被弃用的 my_sql 而不是 PDO 或 my_sqli。
黑客仍然能够注入/破解我的网站吗?
谢谢!
简短版:不要这样做。
长版:
假设你有
SELECT * FROM my_table WHERE id = $user_input
如果发生这种情况,那么一些输入(例如CURRENT_TIMESTAMP
)仍然是可能的,尽管“攻击”将被限制在可能无害的程度。这里的解决方案可能是将输入限制为[0-9]
.
在字符串 ( "$user_input"
) 中,这个问题甚至不应该存在。
然而:
á
?如果我想引用某人的话""
怎么办?写一个数学表达式<
(或者甚至写一些看似无害的东西,例如i <3 u
)?所以现在你有:
你专注于解决一个已经解决的问题。当其他人已经开发出几乎不费吹灰之力的适当解决方案时,为什么还要浪费时间做一些需要时间开发且难以维护的事情。
最后,不要使用已弃用的 API。东西被弃用是有原因的。已弃用可能意味着诸如“我们将随时放弃支持”或“这是有严重问题但由于某种原因我们无法修复它”之类的东西。
不推荐使用的 API 应该由没有足够时间或资源进行迁移的开发人员的遗留应用程序使用。从头开始时,请使用受支持的 API。