【发布时间】:2015-11-05 06:02:42
【问题描述】:
假设情景
有一个互联网论坛,可以在其中键入与 URL 匹配的正则表达式,例如
http://somesite.com
一旦提交,将成为论坛帖子HTML中的链接。于是上面的链接就变成了
<a href="http://somesite.com">http://somesite.com</a>
如果可能的话,我想利用它来让 JavaScript 进入 a 标记的 href,即
href="javascript:(function(){alert('Yo, dawg');}())"
关键是我需要以某种方式获取表达式
javascript:(function(){alert('Yo, dawg');}())
做同样的事情,但被解析器识别为 URL。我怎么能这样做?有什么方法可以使用转义字符、unicode 或其他方式吗?
【问题讨论】:
-
不,除非你知道他们用什么正则表达式来解析。
-
我假设他们正在使用服务器端正则表达式?
-
@hjpotter92 为了便于讨论,假设是
/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/,那么这是一个可以解决的问题吗? -
如果您已经知道正则表达式,您可以自己使用解析器对其进行测试!在 regex101.com 上测试模式
-
看模式,我觉得你不行。该模式不接受
javascript:部分。
标签: javascript html regex xss code-injection