是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标签上使用。