PHP验证HTML以防止HTML/xss注入



我需要实现一个逻辑,在这个逻辑中,用户发送一些内容(它可以只是一个字符串,也可以是HTML标记的一部分(,我们将这些信息存储到数据库中,在某个时间段,我们用这些数据替换基本电子邮件模板占位符并发送电子邮件。

用户发送的数据可能包含一些HTML/XSS注入。在将数据存储到数据库之前,我们如何有效地验证数据???

针对XSS注入,您通常可以使用htmlspecialchars,但是,我们知道您打算允许发送HTML,因此您的验证必须针对<script的存在进行检查。如果它存在于您的输入中,那么您应该使其无效。现在,有另一种在HTML中提供Javascript的方法,即内联Javascript,即onclickonhover等的值。我建议确保,如果在标记的<>之间存在这样的事件处理程序,那么只需使输入无效即可。

现在,您还提到了HTML注入,也就是说,注入一些HTML会导致不希望的行为。然而,由于您在输入中欢迎HTML,区分"糟糕的HTML注入"one_answers"良好的HTML注入(可以通过以下方式来决定:

  • 检查您获得的html的有效性
  • 检查HTML可能在应用程序中引起的任何问题

第一个标准很容易确定,阅读链接,第二个标准取决于业务逻辑。例如,如果对HTML有一些期望,那么HTML可能会破坏你的设计,所以你需要为HTML的期望奠定基础。

此外,由于我们谈论的是安全性,请确保您的数据库也不受SQL注入的影响。

最新更新