PDO中的参数化查询对于请求变量是否必需


Are parameterized queries in PDO necessary for request variables?

我知道当用户提交的数据徘徊时,参数化查询是必不可少的,但是我的问题是这是否适用于用户可篡改的数据?

因此,如果我们有一个诸如".../?id=1"之类的URL,是否有必要使用$id准备任何语句,或者URL编码会消除威胁吗?

为什么对所有有外部/变量输入的情况使用预准备语句/参数化查询?

唯一可以信任的查询是每个元素都经过硬编码的查询,或者从应用程序中的硬编码元素派生的查询。

甚至不要信任从自己的数据库中提取的数据。这算作外部/变量数据。复杂的攻击可以使用比简单的"修改查询字符串参数"更多的向量。

我认为对于少量的额外代码开销,完全值得您知道您的查询受到保护而高枕无忧。

URL 编码不会消除威胁。

任何可由用户触摸的东西都应被视为不安全和潜在威胁。您通过id进行查询,因此不对其进行验证并将其直接推入查询仍会导致与根本不使用 PDO 相同的注入问题。