我正在为我的网站创建一个聊天小部件。用户将能够输入纯文本 - 没有 html。
为了消除 HTML 标记并允许用户使用“<”和“>”,我正在接受他们的输入并在用户屏幕的输入上使用 strip_tags() 和输出上的 htmlentities() 对其进行清理—— - 使用 php。一个问题是,如果用户输入“Russia
我的问题是......如果我使用正则表达式在“<”和下一个非空格字符之间创建一个空格,这会帮助我消除 XSS 的威胁吗?它会阻止潜在的 HTML 标记在用户屏幕上呈现吗?
说,如果这样的事情溜走:
创建该空间(例如 < script...>)的一个优点似乎是 strip_tags() 将单独留下“<”。
感谢您的任何建议。
最佳答案
添加的空间足以阻止标签被 strip_tags
剥离。 , and from being rendered as HTML by browsers .
但是在什么时候你会使用这样的正则表达式呢?如果您在完成后添加它strip_tags()
, 合法文本将已被剥离。如果在 strip_tags()
之前添加, 不会有任何标签要剥离,因此用户将在文本中看到间隔的 HTML 标签。
但是,如果他们无论如何都会看到(损坏的)标签,那么您为什么要这样做呢?你可以做 htmlspecialchars()
,无论如何你都必须这样做。
即使是 HTML 解析器也无济于事,因为 HTML 解析器会考虑 <China
在您的示例中也是一个标签。
并且是输入 a<b
的人吗?进行比较、谈论 HTML、试图增加重点或试图注入(inject)恶意脚本?
关于php - <script> 标签 - 留下/创建空间(<script>)会减少 XSS 的威胁吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7842726/