PHP过滤器与PHP htmlspecialchars vs sqli准备

时间:2014-06-21 11:07:15

标签: php html sql

我一直很好奇所提到的sql注入预防方法的优点/缺点。

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

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

我不完全确定sqli prepare是如何工作的,因为我现在对sql的知识有限,但是我认为如果你使用PHP过滤器函数和/或htmlspecialchars没有必要吗?

请注意:如果我错了,请保持火热的建设性,我还在学习PHP和SQL。

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:0)

htmlspecialchars(); 将特殊的html符号转换为特殊字符...

过滤器用于验证数据

预备语句有助于保护sql注入,因为它们仅用作参数

它们不会附加到查询