我知道当用户提交的数据徘徊时,参数化查询是必不可少的,但是我的问题是这是否适用于用户可篡改的数据?
因此,如果我们有一个诸如".../?id=1"之类的URL,是否有必要使用$id准备任何语句,或者URL编码会消除威胁吗?
乔
为什么不对所有有外部/变量输入的情况使用预准备语句/参数化查询?
唯一可以信任的查询是每个元素都经过硬编码的查询,或者从应用程序中的硬编码元素派生的查询。
甚至不要信任从自己的数据库中提取的数据。这算作外部/变量数据。复杂的攻击可以使用比简单的"修改查询字符串参数"更多的向量。
我认为对于少量的额外代码开销,完全值得您知道您的查询受到保护而高枕无忧。
URL 编码不会消除威胁。
任何可由用户触摸的东西都应被视为不安全和潜在威胁。您通过id
进行查询,因此不对其进行验证并将其直接推入查询仍会导致与根本不使用 PDO 相同的注入问题。