PHP 过滤器 vs PHP htmlspecialchars vs sqli 准备

Jef*_*eff 2 html php sql

我一直对上述预防 SQL 注入方法的优点/缺点感到好奇。

PHP 过滤器只是检查输入的格式是否正确,并返回 true 或 false,您可以选择是否发送到服务器。

PHP htmlspecialchars() 函数将特殊字符转换为等效字符串。

我不完全确定 sqli 准备是如何工作的,因为我现在对 sql 的了解有限,但是如果您使用 PHP 过滤器函数和/或 htmlspecialchars 则没有必要,我是否正确地假设它是不必要的?

请注意:如果我全都错了,请保持激烈的建设性,我仍在学习 PHP 和 SQL。

IMS*_*SoP 5

你提到的三件事是完全不同的,只有一件事与SQL注入有关。

  • 正如你所说,过滤器用于验证输入;例如,确保某人没有在电子邮件地址字段中输入电话号码。它们通常与安全无关,而与您所需的数据有关。
  • htmlspecialchars例如,对 HTML 中使用的文本进行转义,这可以确保人们无法欺骗您的网站输出标签。<script>始终仅针对您使用数据的上下文转义数据非常重要,因此您永远不应该将 HTML 转义文本存储在数据库中,并且在实际输出 HTML 时始终对其进行转义。
  • 准备好的参数化语句是针对 SQL 注入的有效防护措施。我们的想法不是转义每个字符串以防止其作为 SQL 运行,而是通过将查询发送到带有动态数据所在位置的占位符的数据库,将查询与数据完全分离。由于数据库知道您传递来“填充”占位符的值是数据,因此攻击者无法欺骗它运行与输入混合的额外 SQL。