URL上的HTML <script>片段可以用于纯客户端应用程序中的XSS吗?

迈克·张伯伦:

背景

说我有以下网页:

<html>
  <script>
    document.write('querystring=' + location.search.substr(1));
  </script>
<html>

我在这样的URL上打开它:

http://completely-secure-site/?<script>alert('fsecurity')</script>

在所有尝试使用的浏览器(Chrome 57,Firefox 52和Safari 10)中,结果为:

querystring =%3Cscript%3Ealert(%27fsecurity%27)%3C / script%3E

因为尖括号<>无效的URL字符,他们似乎得到自动被浏览器的方式编码,才可以拿到附近的JS运行时的任何地方。

我的假设

这使我相信,使用document.write直接在客户端上直接呈现查询字符串始终是安全的,而不是可能的XSS向量。(我意识到,当然还有很多其他方法可以使应用程序容易受到攻击,但让我们坚持此处所述的确切情况。)

我的问题

我对这个假设是否正确?

  • 所有合理的浏览器中的URL中不安全字符的入站编码是否已标准化/强制执行?(没有可能的XSS)
  • 或者,这仅仅是我不应该在全球范围内依赖的某些(现代的)客户的详细信息/实现细节吗?(上述XSS在理论上是可能的)

与这个问题无关,但很有趣。如果我先解码URI,那么浏览器的行为就不同了:document.write(decodeURI(location.search.substr(1)));Chrome和Safari中XSS Auditor都会阻止页面,而Firefox会显示警报。

德斯蒂尼文字:

如果我?<script>alert("d")</script>在Windows XP的IE6上使用查询字符串,则使注入的代码显示警报,这种情况也会decodeURIdecodeURIComponent页面中发生,因此如果IE6仍然是一个合理的浏览器,我会说您的第二个假设是正确的:这是现代浏览器

我还看到Firefox 53在使用解码方法时显示注入的XSS警报,Opera 44和Chrome 57(均在Windows上)阻止了代码。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Facebook登录消息:“ URL被阻止:此重定向失败,因为在应用程序的客户端OAuth设置中未将重定向URI列入白名单。”

我可以在服务器端应用程序(PHP,Ruby,Python等)上读取URL的哈希部分吗?

使用ArrayBinding插入Oracle上的表时,客户端应用程序挂起

如何在Node.js应用程序的客户端站点上处理JWT令牌?

如何在本机应用程序上存储OAuth客户端ID

Facebook登录消息:“ URL被阻止:此重定向失败,因为该重定向URI未在应用程序的客户端OAuth设置中列入白名单。”

在用于与FB Messenger进行帐户链接的Cognito用户池应用程序客户端的回调URL中应添加什么?

GitLab页面可以用于mkdocs项目上的审阅应用程序吗?

我可以在Firebase上管理多少个客户端应用程序?

Facebook:URL阻止此重定向失败,因为在应用程序的客户端OAuth设置中未将重定向URI列入白名单

如何在Ubuntu上安装Wire Messenger桌面应用程序/客户端?

客户端的HTML5应用程序缓存文件存储在哪里?

FoundationDB,层:它托管在客户端应用程序或服务器节点上吗?

带有移动和Web客户端的Amazon Web Services上的Java应用程序

同一设备上的Android客户端服务器应用程序

在Windows 8.1 Metro Style应用程序上使用旧版SignalR客户端

Visual Studio 2013可以在NodeJs Web应用程序中调试客户端javascript吗

Spring应用程序-将Amazon S3上的图像获取到客户端

使用<script type =“ text / template”>,<script type =“ text / tcl”>或<template>作为客户端HTML模板吗?

Mobile Angular UI是我可以用于移动html应用程序的框架吗?

如何在Windows 7上启动Azure远程应用程序客户端

如何使用Nginx作为反向代理在Spring Boot应用程序上的嵌入式Tomcat访问日志中记录真实的客户端IP?

Viusal C# WinForm 应用程序:客户端 PC 上的字体

托管在 Heroku 上的 NodeJS 应用程序不设置客户端 cookie

我可以在 android apk 中动态下载 Web 应用程序客户端并启动吗?

将 Google Script 用于 getEditResponeURL 代码时,我可以用特定文本替换 URL 链接吗?

此客户端应用程序未批准回调 URL。可以在您的应用程序设置中调整已批准的回调 URL 该怎么办?

在服务器上验证移动应用程序客户端的方法

使用 Google Apps Script 在 Web 应用程序中创建 HTML 片段页面或模板页面以动态刷新它的确定方法是什么?