最近我们的云真机平台需要对标岩鼠,新增抓包的功能,所以专门去看了下岩鼠的抓包页面, 发现是通过mitproxy来做iframe嵌套实现的。那我们也可以借用mitproxy来解决我们的问题了。
问题1
本以为事情会很顺利,所以我们先尝试做demo的时候,本地先启动了一个mitproxy的服务,由于我们是需要有web的页面的, 所以我们的启动命令是:
# web-host跟上的是本机的ip地址 mitmweb --web-port 10000 --no-web-open-browser -p 20000 --web-host 192.168.31.252
讯享网
直接访问链接是可以正常访问的。但是我们将这个页面以iframe的形式嵌入到我们自己的网站上的时候,结果确不是我们想要看到的。


页面并没有正常的加载出来,而通过控制台,我们发现出现了这样的一个错误提示信息。
通过谷歌得到了这样子的信息 X-Frame-Options
X-Frame-Options 有三个可能的值:
讯享网X-Frame-Options: deny X-Frame-Options: sameorigin X-Frame-Options: allow-from https://example.com/
换一句话说,如果设置为 deny,不光在别人的网站 frame 嵌入时会无法加载,在同域名页面中同样会无法加载。另一方面,如果设置为sameorigin,那么页面就可以在同域名页面的 frame 中嵌套。
deny表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。sameorigin表示该页面可以在相同域名页面的 frame 中展示。allow-from *uri*表示该页面可以在指定来源的 frame 中展示
通过上述的内容,我们大致能够猜测出来,是由于mitmweb的header中设置了deny的结果,不过这个是我们的猜测而已,所以我们还是需要具体确认下才知道。
app.py

def set_default_headers(self): super().set_default_headers() self.set_header("Server", version.MITMPROXY) self.set_header("X-Frame-Options", "DENY") self.add_header("X-XSS-Protection", "1; mode=block") self.add_header("X-Content-Type-Options", "nosniff") self.add_header( "Content-Security-Policy", "default-src 'self'; " "connect-src 'self' ws:; " "style-src 'self' 'unsafe-inline'" )
我们可以看到确实在header中添加了这样子的一个deny的情况。所以要解决这个问题我们只能够修改源码来进行解决了。
页面已经可以正常打开了

问题2
本以为下来就不会有问题了,结果我们操作web上面的一些按钮后,界面均没有任何的响应,通过抓包发现这样子的结果。均为403的状态。

通过后台的日志我们看到这样子的一个日志信息
WARNING:tornado.general:403 PUT /options (192.168.31.252): XSRF cookie does not match POST argument
看来是嵌套的iframe还进行了xsrf的一些认证了。但是我们知道最新的chrome的版本禁止了内嵌iframe的cookie的传递,所以如果要根本上解决这个问题就比较困难了,所以还是去掉xsrf的认证是最靠谱的了。
所以我们找到了这样子的一个开关
app.py
讯享网def __init__(self, master: "mitmproxy.tools.web.master.WebMaster", debug: bool) -> None: self.master = master super().__init__( default_host="dns-rebind-protection", template_path=os.path.join(os.path.dirname(__file__), "templates"), static_path=os.path.join(os.path.dirname(__file__), "static"), xsrf_cookies=True, cookie_secret=os.urandom(256), debug=debug, autoreload=False, ) ....
所以这里我们只要xsrf_coookies不启用即可了。
至此 所有的问题都得到了解决了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/70034.html