Javascript可以写在html href标记中吗?
我正试图找出所有可以编写javascript的方法。我正在制作一个可接受标签的白名单,但是属性让我感到困惑 在我的富html编辑器中,我允许像链接这样的东西Javascript可以写在html href标记中吗?,javascript,security,html-agility-pack,whitelist,Javascript,Security,Html Agility Pack,Whitelist,我正试图找出所有可以编写javascript的方法。我正在制作一个可接受标签的白名单,但是属性让我感到困惑 在我的富html编辑器中,我允许像链接这样的东西 <a href="">Hi </a> 现在我正在使用html敏捷包来摆脱我不支持的属性和html标记 然而,我仍然不清楚一个人是否可以这样做 <a href="<script>alert('hi')</script>">Bad </a> 因此,我不确定是否必
<a href="">Hi </a>
现在我正在使用html敏捷包来摆脱我不支持的属性和html标记
然而,我仍然不清楚一个人是否可以这样做
<a href="<script>alert('hi')</script>">Bad </a>
因此,我不确定是否必须开始查看我支持的所有属性的内部文本并对其进行html编码?或者如果什么
我也不知道如何防止html链接进入某个页面并在加载时启动一些javascript
我不确定白名单是否能阻止它。
<a href="javascript:void(0)" onclick="alert('hi');">Bad</a>
或
或
您可以执行以下操作:
<a href="javascript:(function(){
alert('hello');
})()">Hello</a>
如果你真的想发疯
编辑:
我更喜欢这个
<a onclick="alert(eval({Crazy:function(){alert('Hello');return 'World';}}).Crazy());">
Crazy
</a>
疯子
您可以执行以下操作:
<a href="javascript:(function(){
alert('hello');
})()">Hello</a>
如果你真的想发疯
编辑:
我更喜欢这个
<a onclick="alert(eval({Crazy:function(){alert('Hello');return 'World';}}).Crazy());">
Crazy
</a>
疯子
如果您试图为用户输入的HTML编写XSS验证器用于生产,我强烈建议您使用现有库。即使使用白名单方法,也有很多可能的属性值会导致XSS。在中搜索“javascript:”可以看到javascript:uri出现的各种地方。以下是一个不完整的列表:
<IMG SRC="javascript:alert('XSS');">
<INPUT TYPE="IMAGE" SRC="javascript:alert('XSS');">
<BODY BACKGROUND="javascript:alert('XSS')">
<IMG LOWSRC="javascript:alert('XSS')">
还有一些方法可以插入外部脚本URL,如下所示:
<XSS STYLE="behavior: url(xss.htc);">
如果你写这篇文章是为了自己的教育,那么XSS备忘单为单元测试提供了一些非常好的素材 如果您试图为用户输入的HTML编写XSS验证器用于生产,我强烈建议您使用现有库。即使使用白名单方法,也有很多可能的属性值会导致XSS。在中搜索“javascript:”可以看到javascript:uri出现的各种地方。以下是一个不完整的列表:
<IMG SRC="javascript:alert('XSS');">
<INPUT TYPE="IMAGE" SRC="javascript:alert('XSS');">
<BODY BACKGROUND="javascript:alert('XSS')">
<IMG LOWSRC="javascript:alert('XSS')">
还有一些方法可以插入外部脚本URL,如下所示:
<XSS STYLE="behavior: url(xss.htc);">
如果你写这篇文章是为了自己的教育,那么XSS备忘单为单元测试提供了一些非常好的素材 你所展示的东西不应该起作用,但是
href=“javascript:alert('Hello!”);“
是一种完全可以接受的嵌入javascript的方式。是的,我真的不知道java脚本应该放在哪里,我只知道它可以放在那里。那么它还能放在什么地方呢?我应该关注什么?比如这些东西能放在什么属性里?它可以放在“id”属性或name属性中…等等。我不知道在哪里可以找到这些信息。@Pekka:完全可以接受-这很常见。@George,common-true,但现在不被接受。您显示的内容不应该起作用,但是href=“javascript:alert('Hello!”)
是一种完全可以接受的嵌入Javascript的方式。是的,我真的不知道java脚本应该放在哪里,我只知道它可以放在那里。那么它还能放在什么地方呢?我应该关注什么?比如这些东西能放在什么属性里?它可以放在“id”属性或name属性中…等等。我不知道从哪里可以找到这些信息。@Pekka:完全可以接受-这很常见。@George,common true,但是它现在不被接受,你可以把整个类放在里面,理论上你甚至可以导入一个外部javascript文件,访问页面上的几乎任何东西,然后将其发送到互联网上的任何地方。那么你如何通过白名单阻止这一点呢(我使用的是html agility pack)不允许链接?使用正则表达式解析href属性,只允许完全限定的链接。类似于^http(s)?:/(www\)(\w+)(\w+))(\w+)(com)$我知道这不完全正确,但我只是在flyYa上写的,这就是我实际做的,我使用了正则表达式,但显然我仍然需要担心UTF-8 Unicode编码一、十六进制编码、jav ascript、jav ;ascript。因此,我不知道如何处理它们。你可以将整个类放在其中。理论上,你甚至可以导入一个外部javascript文件,访问页面上的几乎所有内容,并将其发送到internet上的任何地方。那么,如何通过白名单阻止这种情况(我使用的是html agility pack)不允许链接?使用正则表达式解析href属性,只允许完全限定的链接。类似于^http(s)?:/(www\)(\w+)(\w+))(\w+)(com)$我知道这不完全正确,但我只是在flyYa上写的,这就是我实际做的,我使用了正则表达式,但显然我仍然需要担心UTF-8 Unicode编码一、十六进制编码、jav ascript、jav ;ascript。所以我不知道该怎么对付他们。啊!请大家-停止将“#”作为执行JavaScript的链接的href。改为使用“javascript:void(0)”。这样,当点击链接时,页面不会滚动到顶部。@乔治:想解释一下原因吗?@乔治-我删除了它,不过如果这是您最大的问题,您可以在onclick属性的末尾添加一个“return false”。啊!请大家-停止将“#”作为执行JavaScript的链接的href。改为使用“javascript:void(0)”。这样,当点击链接时,页面不会滚动到顶部。@George:想解释一下原因吗?@George-我删除了它,不过如果这是您最大的问题,您可以在onclick属性的末尾添加一个“return false”。不,我不想使用XSS验证器……我会使用asp.net mvc附带的验证器。我正在尝试创建一个白名单。哦,很好:)但是我认为备忘单仍然回答了你关于JavaScript的所有编写方法的问题。嗯,我不知道如何处理这些情况。UTF-8 Unicode编码一,十六进制编码,jav ascript,jav ;ascript。Httml agility pack可以帮助我解决这些问题,但我不认为这些问题。这些标签中的javascript这个词可以有任意数量的空格吗(比如,你可以用j空格a空格v空格)