Javascript可以写在html href标签中吗?
我正在尝试找出 javascript 的所有编写方式。我正在制作可接受标签的白名单,但属性让我着迷。
在我的丰富的 html 编辑器中,我允许诸如链接之类的东西。
<a href="">Hi </a>
现在我正在使用 html 敏捷包来删除我不支持的属性和 html 标签。
但是我仍然不清楚一个人是否可以做这样的事情
<a href="<script>alert('hi')</script>">Bad </a>
所以我不确定我是否必须开始查看我支持的所有属性的内部文本并对它们进行 html 编码?或者如果什么。
我也不知道如何防止 html 链接进入某个页面并在加载时启动一些 javascript。
我不确定白名单是否可以阻止这种情况。
I am trying to figure out all the ways javascript can be written. I am making a white list of acceptable tags however the attributes are getting me.
In my rich html editor I allow stuff like links.
<a href="">Hi </a>
Now I am using html agility pack to get rid of attributes I won't support and html tags for that matter.
However I am still unclear if a person could do something like this
<a href="<script>alert('hi')</script>">Bad </a>
So I am not sure if I have to start looking at the inner text of all attributes that I support and html encode them? Or if what.
I am also not sure how to prevent a html link that goes to some page and launches some javascript on load.
I am not sure if a white list can stop that one.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
或者
or
如果您尝试为用户输入的 HTML 编写 XSS 验证器以进行生产,我强烈建议您使用现有的库。即使您采用白名单方法,仍有很多很多可能的属性值可能导致 XSS。在 XSS Cheat Sheet 中搜索“javascript:”即可查看各种位置 javascript: uris可以出现。这里有一个不完整的列表:
还有一些方法可以注入外部脚本 url,如下所示:
如果您是为了自己的教育而编写此内容,那么 XSS Cheat Sheet 为单元测试提供了一些非常好的素材。
If you're trying to write an XSS validator for user-entered HTML for production, I highly recommend you use an existing library. Even with the whitelist approach you are taking, there are many, many possible attribute values that can result in XSS. Search for "javascript:" in the XSS Cheat Sheet to see all sorts of places javascript: uris can turn up. Here is an incomplete list:
There are also ways to inject external script urls, like this:
If you're writing this for your own education, then the XSS Cheat Sheet has some really great fodder for unit tests.
你可以这样做:
如果你想变得非常疯狂
编辑:
我更喜欢这个
you can do this:
if you want to get really crazy
Edit:
I like this even better