gpt4 book ai didi

javascript - 如何使用 python 捕获 URL 中的 javascript 代码注入(inject)?

转载 作者:行者123 更新时间:2023-12-03 10:41:19 25 4
gpt4 key购买 nike

如何检测格式错误的 URL 或注入(inject)了 javascript 的 URL

'http://example.com/portal/image/user_male_portrait?img_id=755109&t=1372243875358"><script>setTimeout(function () {document.body.innerHTML = \'<img src="http://images.example.com:9191/public/rickroll.gif" style="display: block; width: 100%">\'; }, 100);</script><!--'

'http://example.com/portal/image/user_male_portrait?img_id=566203&t=1350313911834'

第一个 URL 是恶意的,而第二个 URL 则不是。我希望能够标记第一个。我可以使用正则表达式来匹配我想的脚本标签,但这就是用 Python 实现的方法吗?

最佳答案

做一个正则表达式来知道一个 URL 是否是脚本注入(inject)的尝试是非常困难的。为了匹配您给出的示例,搜索 <script就足够了。

但是一个<script>标签并不是 HTML 中唯一危险的东西:例如考虑 URL http://example.com/portal/image/user_male_portrait?img_id=755109&t=1372243875358" onclick="setTimeout(function () { document.body.innerHTML = '<img src="http://images.example.com:9191/public/rickroll.gif" style="display: block; width: 100%">'; }, 100);" 。没有<script>完全没有标签。

<小时/>

总而言之,在正则表达式中唯一真正能做的就是拒绝任何匹配的 URL

(?i)^(?!\s*https?://)|[<>"']

即拒绝任何有 <>"' 的 URL裸露;并拒绝所有以正则表达式 https?:// 以外的任何内容开头的 URL (毕竟,即使有了之前的检查,我仍然可以做到

javascript:alert(Object.keys({gotcha:42}))
<小时/>

但是,如果这是一种输入清理的情况,那么请注意,人们也可以始终对 < 进行百分比编码, > , "'任何 URL 中都不会损坏,所以也许:

url.replace('<', '%3C').replace('>', '%3E')\
.replace('"', '%22').replace("'", '%27')

是更明智的做法(同时检查 scheme 确实是 "http:""https:" )。或者使用urllib.parse.urlparse将 URL 拆分为多个组件,然后对其进行解码和重新编码,最后使用 urllib.parse.urlunparse再次将其变成 URL。

关于javascript - 如何使用 python 捕获 URL 中的 javascript 代码注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28767896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com