我有一个旨在嵌入到任何网页的JavaScript代码片段。这段代码将一个表单加载到它所嵌入的页面中。代码段然后将表单数据发送到一个安全的URL。问题在于,代码片段加载表单的页面可能不安全,但我需要将表单数据安全地传输到安全的外部URL。如果可能,我该如何实现?如何将内容从非安全网页安全发送到安全网址?
回答
如果表单的ACTION属性将其指向HTTPS目标,则内容将被加密并安全地传输到目标,而不管HTML最初传输的格式如何:当用户提交表单时,浏览器启动新的连接,并针对目的地发出POST请求(我假设你的表单的METHOD是POST,而不是GET),而不是当前的浏览器位置。在这种情况下,该POST通过HTTPS发生,因为目标是“https:// ...”。
这并没有说明XSS的内在安全风险,也没有可能嵌入到不安全页面的内容,或者是在通过JavaScript通过HTTP传输时对HTML格式的MITM攻击......您必须决定这些考虑是否值得您的项目。也许你的JavaScript可以嵌入带有表单的IFRAME(对IFRAME的SRC使用HTTPS)而不是FORM本身;这是Facebook和其他人为防止其他脚本在不安全页面上运行而访问表单及其数据 - 浏览器将根据其同源策略阻止其他脚本的这种尝试(每个流行的现代浏览器都可以依靠做到这一点),并在IFRAME请求时通过HTTPS传输表单。当内容需要安全并且无法控制表单嵌入的位置时,这是将表单传送到任意网站的首选方式。
即使是一个iframe,如果外部页面覆盖纯HTTP,也会出现[类似风险](http://stackoverflow.com/a/3183176/372643)。 – Bruno
如果您的JS和表单仅通过HTTPS传输(并且拒绝访问HTTP请求),那么您已尽全力。如果一个MITM通过HTTP截获了外部页面,并且重写了你的JS嵌入来放置一个HTTP IFRAME,它将不会加载你的表单。他们真正能做的就是拦截你的JS,杀死它,并从头开始注入自己的表单。在这一点上你无能为力 - 即使你通常没有以任何方式提供表格,他们也可以重写页面并创建一个令人信服的翻版,然后插入它。如果URL错误或锁定图标丢失,则无论如何每个人都会点击。 –
事实上,如果外部页面是普通的HTTP,你不能保证任何东西。 – Bruno
这是当您提交的形式,重要的操作URL,因此,如果您的形式使用的https://
URL,它会使POST请求到该网址的形式本身是否是http://
或https://
网页上。
但是,您还应通过https://
提供表单页面。请参阅first rule of the WASP TLS cheat sheet(此原则不仅适用于登录页面,而且适用于任何类似的表单)。
问题是,如果用户没有通过地址https://
提供表单的页面,而用户可以看到验证,那么用户不能相信MITM攻击者没有更改此表单。例如,这样的攻击者可以透明地替换action
属性以重定向到另一个站点,或者注入一些JavaScript来记录输入该表单的所有密钥,这些密钥应该用于收集敏感数据。
在HTTP页面上加载的JavaScript将被正在修改您的流量的攻击者所取代。修改后的JavaScript可以简单地将数据发布到公众处。因此,无法将数据从HTTP页面安全地传输到HTTPS页面。除非你有我缺少的“安全”的其他定义?
- 1. 从非安全的网页
- 2. 安全网页
- 3. 安全的回形针网址只适用于安全网页
- 4. 如何从安全网页跟踪不安全的http请求
- 5. 春季安全 - 发布到不安全的网页导致403
- 6. 从网页读取图像数据到Firefox安全不安全?
- 7. 在安全的网页上显示非安全项目
- 8. 将不安全网站重定向到安全网站
- 9. 混合安全和非安全页面
- 10. 网址安全行动
- 11. PHP的安全与网址?
- 12. 安全网址/应用
- 13. 安全网址的textarea
- 14. Instagram的profile_picture安全网址
- 15. 更安全的S3网址
- 16. 安全的网址参数
- 17. Base64网址安全吗?
- 18. 网址安全问题
- 19. 安全网址给用户
- 20. 网站安全
- 21. 网络安全
- 22. 网络安全
- 23. 网站安全
- 24. 网店安全
- 25. 安全网站
- 26. 网站安全
- 27. 查找在安全页面触发IE6“非安全项目通知”上发送的非安全http请求
- 28. 内容安全策略春季安全
- 29. 重定向非安全WWW网址,以确保非WWW网址
- 30. 网页安全 - 从HTTP转移到HTTPS?
安全是指你的意思是HTTPS? – Birla
是的,这就是我的意思。 – Babiker