Php <;脚本>;标记-离开/创建空间(<;script>;)会降低XSS的威胁吗?

Php <;脚本>;标记-离开/创建空间(<;script>;)会降低XSS的威胁吗?,php,xss,sanitization,Php,Xss,Sanitization,我正在为我的网站创建聊天小部件。用户将能够输入纯文本-无html 为了消除HTML标记并允许用户使用“”,我正在使用php对他们的输入进行处理,并在输入上使用strip_tags(),在输出上使用htmlentities()对其进行消毒。一个问题是,如果用户输入“Russia,只需使用。这是清理HTML所需的唯一功能。如果您使用得当,XSS威胁将被删除。如果您想显示多行,请使用nl2br,否则文本将显示在一行上 strip_标记是清理HTML的正确功能。充其量,它会吃掉或损坏某些有效文本。最坏的

我正在为我的网站创建聊天小部件。用户将能够输入纯文本-无html

为了消除HTML标记并允许用户使用“”,我正在使用php对他们的输入进行处理,并在输入上使用strip_tags(),在输出上使用htmlentities()对其进行消毒。一个问题是,如果用户输入“Russia,只需使用。这是清理HTML所需的唯一功能。如果您使用得当,XSS威胁将被删除。如果您想显示多行,请使用nl2br,否则文本将显示在一行上


strip_标记是清理HTML的正确功能。充其量,它会吃掉或损坏某些有效文本。最坏的情况是,如果使用allowed_tags参数,它不会清理任何内容,因为保留了属性。它也不会阻止HTML实体。

添加的空间足以阻止标记被剥离由
strip_标签

但是在什么时候你会使用这样一个正则表达式呢?如果你在
strip\u tags()
之后添加它,合法文本将已经被剥离。如果你在
strip\u tags()
之前添加它,将不会有任何标记留下来剥离,因此用户将在文本中看到间隔的HTML标记

但如果他们无论如何都会看到(损坏的)标签,你为什么要这么做呢?你可以这么做,你无论如何都必须这么做


甚至HTML解析器也不会帮助你,因为HTML解析器会考虑<代码> >代码>条形码()/<代码>你是指<代码>脱衣舞标签()/<代码>?还有,如果你的正则表达式失败了呢?<代码>是的,脱衣舞标签()。谢谢你。我的想法是,我会做一个PrggRePoT()(Global)来在每一个之后添加一个空间。“不会对XSS构成威胁,但我的直觉告诉我,我不应该如此肯定……我正在对从MySQL DB(用户条目)输出到用户浏览器的所有内容执行HTMLEntries()。那怎么办?使用HTML转义,不要去掉标记。是否应该允许用户在聊天中讨论标签?我认为包含“”的聊天信息是有效的聊天信息。但我希望它呈现为文本,而不是HTML,因此我必须转义其中的HTML。这个人将进行比较-例如LarryBird@broncozr确实会。如果它不是一个特别技术性的网站,那么很可能不会有太多的HTML被发布。而那些尝试过的人会很快发现它不起作用。。。如果你真的想允许一些HTML,你真的只需要考虑清理输入。@broncozr哦,还有:“我讨厌在博客上发表评论,我的评论是通过像strip_tags()这样的东西传递的,这实际上破坏了我想说的。”;)哈我读过一篇很老的文章,IIRC。谢谢你的帮助。