2

我的 Web 应用程序向登录用户显示一些敏感信息。用户访问另一个站点而没有先明确退出我的站点。如果不接受我或用户的同意,我如何确保其他站点无法访问敏感信息?

例如,如果我的敏感数据采用 JavaScript 格式,则其他站点可以将其包含在脚本标记中并读取副作用。我可以继续建立一个黑名单,但我不想列举什么是不安全的。我想知道什么是安全的,但我找不到任何文档。

更新:在我的示例中,来自受害者站点的 JavaScript是在攻击者的站点上执行的,而不是相反,这将是跨站点脚本。

另一个例子是图像,任何其他网站都可以读取宽度和高度,但我不认为他们可以读取内容,但他们可以显示它。

第三个例子是,没有 X-Frame-Options 标头的所有内容都可以加载到 iframe 中,并且可以通过诱骗用户进行拖放或复制和粘贴来窃取数据。

4

5 回答 5

1

由于我在这里没有得到我想要的答案,所以我在另一个论坛中询问并得到了答案。它在这里: https ://groups.google.com/forum/?fromgroups=#!topic/mozilla.dev.security/9U6HTOh-p4g

我还发现这个页面回答了我的问题: http ://code.google.com/p/browsersec/wiki/Part2#Life_outside_same-origin_rules

于 2012-12-13T20:02:34.680 回答
1

例如,如果我的敏感数据采用 JavaScript 格式,则其他站点可以将其包含在脚本标记中

是的!所以不要把它放在 JavaScript/JSONP 格式。

传回 JSON 或 JS 代码的通常修复方法是在前面放置一些不可执行的内容,从而导致语法错误或挂起(for(;;);很流行)。因此,将资源包括在内<script>不会让攻击者在任何地方。当您从自己的站点访问它时,您可以使用 XMLHttpRequest 获取它并在评估它之前去掉前缀。

(一个不起作用的解决方法是检查window.location返回的脚本:当您被包含在攻击者的页面中时,他们可以控制 JavaScript 环境并可能破坏内置对象来做意想不到的事情。)

于 2012-12-02T13:15:48.483 回答
1

跨站攻击的关键是确保您的用户输入将被显示,是合法的,不包含一些脚本。你可以在一开始就停止它。

于 2012-12-01T13:48:42.023 回答
0

首先,像 superpdm 状态一样,从头开始设计您的应用程序,以确保敏感信息不首先存储在客户端,或者恶意用户无法理解这些信息。

此外,对于您没有太多控制权的数据项,您可以利用内置的 HTTP 控件(如HttpOnly),它试图确保客户端脚本无法访问会话令牌等 cookie。设置httpOnly您的 cookie 将大大有助于确保恶意 vbscript、javascript 等不会读取或修改您的客户端令牌。

于 2012-12-01T18:46:16.320 回答
0

我认为我们的网络安全知识世界中仍然存在一些混乱。您害怕Cross Site Request Forgery,但仍在描述和寻找Cross Site Scripting的解决方案。

跨站点脚本是一个允许恶意人员将一些不需要的内容注入您的站点的漏洞。它可能是一些文本,但也可能是一些 JS 代码或 VB 或 Java Applet(我提到小程序是因为它们可以用来绕过httpOnly标志提供的保护)。因此,如果您有意识的用户点击恶意链接,他的数据可能会被盗。这取决于呈现给用户的敏感数据量。点击链接不仅是 XSS 攻击的攻击媒介,如果您将其他用户提供的未经过滤的内容呈现给用户,也可能有人注入一些恶意代码并造成一些破坏。他不需要偷别人的饼干来得到他想要的东西。它与在登录到您的应用程序的同时访问其他网站无关。我推荐:XSS

Cross Site Request Forgery是一个允许某人构建特制表单并将其呈现给登录用户的漏洞,用户在提交此表单后可能会在您的应用程序中执行他不打算执行的操作。操作可以是转移、更改密码或添加用户。这就是您担心的威胁,如果用户与您的应用程序保持会话并使用这种通过 JS 自动提交的表单访问站点,则此类请求会通过身份验证并执行操作。并且 httpOnly 不会保护它,因为攻击者不需要访问存储在 cookie 中的 sessionId。我推荐:CSRF

于 2012-12-01T21:06:55.163 回答