php - <script> 标签 - 留下/创建空间(<script>)会减少 XSS 的威胁吗?

标签 php xss sanitization

我正在为我的网站创建一个聊天小部件。用户将能够输入纯文本 - 没有 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 - &lt;script&gt; 标签 - 留下/创建空间(&lt;script&gt;)会减少 XSS 的威胁吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7842726/

相关文章:

language-agnostic - 检测文本字符串中的(顽皮或友善的)URL 或链接

sql - 在 Oracle : how can I tell if an SQL query will cause changes without executing it?

php - 在 php 表中显示 MSSQL 选择数据

php - FILTER_SANITIZE_STRING 是否足以避免 SQL 注入(inject)和 XSS 攻击?

Javascript XSS 预防

javascript - 在字段中键入和粘贴之间的区别

php - 同一个 echo 上的不同 css 类?

php - 使用 PHP 连接 SSH 时,CMD 启动或 PSExec 在前台打开交互式应用程序

php - Twitter Typeahead 标签从 MySQL 获取数据

javascript - 如何通过串联使用 createTextNode()