是check_plain()足以重新显示用户在浏览器中输入的文字,还是应该我还是带过滤器filter_xss() ?
是check_plain()足以重新显示用户在浏览器中输入的文字,还是应该我还是带过滤器filter_xss() ?
Answers:
我认为问题在于使用check_plain(filter_xss($string))
或filter_xss(check_plain($string))
。
check_plain()
并filter_xss()
有两个不同的目的:
check_plain()
在纯文本字符串中编码特殊字符,然后将其显示为HTML。filter_xss()
过滤HTML字符串以防止跨站点脚本(XSS)漏洞。具体而言,其目的是:
如果使用check_plain()
,则传递给该函数的字符串应用作纯文本;在这种情况下,filter_xss()
则没有必要。如果使用filter_xss()
,则传递给该函数的字符串应该是HTML,并且check_plain()
不是必需的。
如果问题是关于在同一字符串的不同部分上使用check_plain()
和filter_xss()
,那么,正如greggles在其注释中指出的那样,您可以(例如)check_plain()
在标签属性的内容以及filter_xss()
整个HTML标签上使用。