清理将在网页上输出的用户输入的最佳位置在哪里?

ale*_*lex 1 php security xss

在MVC的做事方式中,哪里是最好的运行地点,例如htmlspecialchars()在任何输入上?它应该在视图中发生(在这里做它有意义,因为我应该处理整个控制器和模型的原始输入?)

我不太确定...在视图或控制器中执行此操作有什么好处?这只是为了减少输出到页面...以最大限度地减少潜在的XSS攻击.

Dan*_*ral 6

嗯,这取决于,不是吗?您应该清理视图中输出的所有内容.首先,因为清理取决于输出的格式.JSON清理输出与HTML清理输出不同,对吧?其次,因为您永远不想信任您拥有的数据.它可能通过多种方式受到损害.

但这并不能防止SQL注入等.现在,你永远不想在客户端javascript中这样做,因为攻击者可能很容易替换它.同样,我的建议是在使用时进行消毒.如果您只是写入文件,则可能不需要.而且一些数据库访问库也不需要它.其他人呢.

无论如何,在使用时进行,并且所有源代码都可以更加可靠地抵御攻击和错误(或通过错误进行攻击).