【问题标题】:Help With Output in PHP帮助在 PHP 中输​​出
【发布时间】:2011-07-06 02:12:00
【问题描述】:

代码-

$price = mysqli_real_escape_string($connect,trim($results['price']));

从数据库中检索价格,然后使用 -

回显
echo $price; 

问题 - 这对于 XSS 或 SQL 注入是否足够安全?它只包含数字。

谢谢

【问题讨论】:

  • $results['price'] 是用户输入吗?
  • @CJD 没有。它是 mysqli_fetch_array
  • SQL 注入只有在用户操作写入数据库时​​才会发生。

标签: php mysql database echo


【解决方案1】:

检查可能应该在数据输入期间完成,但您可以安全并在输出时检查。我只会使用is_numeric 或类似的东西来确保输出确实是一个数字。

【讨论】:

    【解决方案2】:

    标准做法是使用htmlspecialchars()htmlentities() 将输出转义到浏览器以防止XSS。但是,正如另一个答案中提到的那样,真正的问题是首先是否将正确的数据存储在数据库中。在存储到数据库之前,应该对其进行适当的验证和转义。

    【讨论】:

      【解决方案3】:

      为了安全起见,您需要评估 $results['price'] 的输入是否来自用户输入。

      如果您需要在将其发送到 SQL 之前将其作为预期值进行强烈验证/清理。

      【讨论】:

        【解决方案4】:

        如果您的数据仅从数据库中读取,您可以使用 mysqli_real_escape_string() 忽略。它对于转义应该写入数据库的用户输入很有价值。

        【讨论】:

          【解决方案5】:

          mysqli_real_escape_string() 用于对即将插入数据库的数据进行转义,以防止 SQL 注入。它与 XSS 无关。

          你必须使用 htmlentities() 来做你想做的事。我建议您阅读 eykanal 的答案并使用 is_numeric 进行验证。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-02-26
            • 1970-01-01
            • 1970-01-01
            • 2011-03-30
            • 2011-11-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多