问题标签 [browser-security]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
security - Chrome 扩展权限提升可能吗?
假设我安装了一个请求权限 A 的扩展 E(例如,选项卡)。假设这个扩展是恶意的。进一步假设扩展系统有一个绑定层漏洞,E 可以利用该漏洞在扩展进程中执行任意代码。E 可以使用除 A 允许的 API 之外的其他特权 API 吗?
那是在与扩展核心进程不同的进程中隔离的实际特权 API 吗?
angularjs - 我的网站可以用 Chrome 打开,但不能用 IE 打开
我已经建立了这个网站。它在 Chrome 中完美运行,而我无法在 Internet Explorer 11 中打开它。它显示一个空白页面。
当我打开开发者工具时F12
,控制台中没有显示错误。
有谁知道问题出在哪里?
编辑1:
我换了几台机器,终于可以在控制台看到错误:console error。正如@MrNew 评论的那样,它是Unable to get property 'postMessage' of undefined or null reference
.
有谁知道如何解决这一问题?是因为angularjs和IE 11的兼容性吗?
javascript - 浏览器弹窗请求密码可见
我使用一些客户环境并登录到一些服务器,我有一些弹出窗口要求向我想要连接的 sys 提供用户密码。在 chrome 中打开调试选项时,我在请求有效负载中看到了我在 UI 弹出窗口中输入的密码。
- 是安全问题吗?
- 如果是的话,省略这部分的记录方法是什么?加密?
php - 我应该如何通过 PHP 为每个浏览器窗口生成唯一的会话?如果使用手动 sessid 设置会话更安全?
我有一个页面来注册用户信息以进行请求提交。我想将用户在每个窗口中输入的用户信息分别保存在每个浏览器窗口的专用会话中。我搜索了谷歌和stackoverflow,但没有得到好的结果。
我应该如何通过 PHP 为每个浏览器窗口生成唯一的会话?如果使用手动 sessid 设置会话更安全?
javascript - 如果延迟 <= 1000 毫秒,则不会抑制弹出窗口
我已经在执行下面代码片段的各种浏览器上进行了测试,默认情况下它们都被阻止了。
但如果延迟是<= 1000
它可以成功打开一个新的选项卡/窗口。
为什么?
javascript - CORS Origin 设置不正确?
- 我有一个 JavaScript 应用程序,假设它部署在
portal.example.com
. - 这包括一个
<script>
标签,该标签加载来自 的源assets.example.com
。 - 该 JavaScript 文件向 API 发出 HTTP 请求
admin.example.com
由于 CORS 飞行前失败,此 API 请求出错。
实际OPTIONS
请求如下
实际OPTIONS
响应如下
我认为问题是因为请求实际上来自发出请求的脚本assets.example.com
。所以我应该Access-Control-Allow-Origin: http://assets.example.com
在OPTIONS
回复中返回。但是,我遵循了W3C的建议。
Access-Control-Allow-Origin 标头指示是否可以通过在响应中返回 Origin 请求标头的值“*”或“null”来共享资源。
那么我是否误解了 CORS,或者浏览器是否发送了Origin
主要执行 URL 而不是发出请求的脚本的 URL?
更新
获取响应
response-headers - 在不禁用浏览器安全性的情况下如何读取响应标头令牌
我正在使用 angular4 开发一个带有登录和注册页面的 Web 应用程序。我有一个带有用户名和密码的登录表单。提交登录表单后,我得到了 rest api 响应,但我无法读取响应标头。
注意:我只能从响应头中读取内容类型。其余的我看不懂。
但是当我禁用浏览器安全性时,我能够读取所有响应标头。
如何在不禁用浏览器安全性的情况下读取响应标头?
javascript - 当分析调用来自 IFRAME 时,Google Analytics 如何绕过同源策略?
当 GA 呼叫来自 IFRAME 时,它如何获取父 URL?
通常,当 javascript 尝试访问其框架浏览器之外的任何内容时,会引发 SAME ORIGIN POLICY 错误。特别是对于 parent.document、parent.location 等。但是,当您检查发送回服务器的分析数据时,很明显该调用带有 window.top 的 URL。要做到这一点几乎是不可能的,我相信他们正在做一个聪明的黑客或正在获得优惠待遇。
示例:页面:http ://delhincr.kidzania.com/en-in/pages/virtual-tour IFRAME SRC:http : //walkinto.in/tour/W1vLiH5CbG-yePUsrc0WM(显然不是同源)
来自 IFRAME 的 GA 电话:
https://www.google-analytics.com/r/collect?v=1&_v=j71&a=944377214&t=pageview&_s=1&dl= http%3A%2F%2Fwalkinto.in%2Ftour%2FW1vLiH5CbG-yePUsrc0WM &dr= http%3A%2F %2Fdelhincr.kidzania.com%2Fen-in%2Fpages%2Fvirtual-tour &ul=en-us&de=UTF-8&dt=KidZania%20Delhi%20NCR&sd=24-bit&sr=1366x768&vp=1140x641&je=0&_u=CBCAEAAB~&jid=15810307988&cid= 770600375.1539312411&tid=UA-50632293-1&_gid=1805256933.1539654946&_r=1&z=1389492630
谷歌如何绕过这个?是否可以使用 IFRAME 中的 GA 到父页面上的 GA 的 postMessage?
javascript - 使用危险的SetInnerHtml 有什么风险以及是什么阻止了某人通过浏览器删除净化?
我正在使用dangerouslySetInnerHtml
将小胡子模板中的 html 渲染到 React 中。我正在阅读有关此安全问题 的信息,这对我来说是新的。
我的用例是我有一些包含 svg 的 html。这是静态的,不会从任何数据库中提取。我只想渲染这个。
我读到您应该“清理”html。在此给出的示例提供了人们在清理 html 时使用的库,然后在dangerouslySetInnerHtml
属性中使用此清理过的变体。
但是,是什么阻止了某人简单地进入 JS 并通过 devtools 或其他东西编辑 html,从而不会进行清理。
我没有太多关于这方面的背景信息,所以很抱歉我不能举一个更具体的例子。
我已经尝试了许多将 html 解析为 React 的解析器。得出的结论是我需要使用 dangerouslySetInnerHtml
javascript - 有没有办法在服务器端不设置显式 CORS 标头的情况下加载跨源请求?
我正在尝试用 JavaScript 编写 RSS 提要使用者,但不幸的是,大多数提要似乎没有在其响应中明确设置访问控制允许来源标头(尽管我的理解是数据是供公共消费/抓取的)。
我的问题是:有没有办法在javascript中加载这样的数据(除了使用服务器端代理或将项目变成浏览器插件),因为:
- 这些请求是简单的获取请求。(因此,即使存在 access-control-allow-origin 标头,通常也不会发送任何 OPTIONS 请求)
- Cookies / 身份验证并不重要,因为提要是公开的。(因此,如果它是 XMLHttpRequest,withCredentials 将是错误的)
例如:
更新
我的问题的第二部分是:为什么不允许这样做?
例如:假设我出于某种原因导航到域恶意网站。它发送一个简单的 Ajax GET 请求,包括withCredentials: false
到 my-bank.com。my-bank.com 处理此请求,但随后浏览器阻止响应。
阻止对此获取请求的响应如何提高安全性?
- 如果我在不同的选项卡中登录 my-bank.com 并不重要,因为根据
withCredentials: false
指令不会发送任何 cookie 或授权标头。经典的 XSRF 场景已经被阻止了——这个请求就像互联网上的任何其他用户(包括恶意用户)已经加载了这个资源一样。 - 如果 URL 中有一个身份验证令牌(例如 JWT),那么恶意网站已经拥有它,并且可能会存储它以供以后自己使用 - 阻止此特定响应不会改变这一点。
- 它不保护 my-bank.com 上的数据,因为它不阻止请求,只是响应 - 如果他们有一个 REST 样式的资源来执行更新以响应该 GET,那么我将度过一段糟糕的时光。即:除非 my-bank.com 需要一个非简单的更新请求(一个 POST 或带有标头的请求,以便首先发送一个 OPTIONS 请求),否则不会阻止经典的 CSRF
再说一次,在这里阻止响应实际上有什么好处?
我想我正在寻找的答案是这样的:“如果简单的withCredentials: false
请求也被允许破坏相同的源策略,那么一个坏演员可以做 X”。
关于 X 是什么的任何想法?