2

htmlspcialchars($user_data)PHP 或Ruby on Rails是否h(user_data)足以防御所有 XSS(跨站点脚本)攻击?使用的编码或任何其他可能的考虑因素如何?

4

3 回答 3

4

htmlspecialchars和转义h所有可能在 HTML 中具有特殊含义的字符,没有办法将文字 HTML 注入目标页面。

但是,有一些方法可以执行(危险的)Javascript,而不需要 HTML 注入。例如,如果您有一个转换[img http://example.com/img.jpg]为的应用程序<img src="http://example.com/img.jpg/>,想象一下如果用户输入 会发生什么[img javascript:alert(document.cookies);]。转义 HTML 字符不会将您保存在这里,您必须清理给定的 URL。这是一个相当全面的可能的 XSS 漏洞示例列表

如果您始终使用htmlspecialchars/h 并且始终完全清理用作任何 HTML 元素中的属性值的用户输入,那么您就有了适当的 XSS 防御。

于 2009-05-14T07:55:43.063 回答
1

一般来说,存在三种不同类型的 XSS基于 DOM 的非持久的和持久的。

现在服务器端语言只能防止后两种(非持久性持久性),因为第一种只发生在客户端。

于 2009-05-14T07:49:35.417 回答
0

如果您不允许在帖子中使用 HTML 标签,您也可以尝试使用 strip_tags。还可以查看html 净化器

于 2009-05-14T07:55:01.690 回答