问题标签 [xss]

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.

0 投票
3 回答
1007 浏览

javascript - 优雅地关闭 iframe 周围的框架(工具栏)

我创建了一个与相当流行的音乐零售商一起使用的工具。

该工具提供了增强的搜索功能(透明的 last.fm 结果,没有广告,没有跛脚,没有令人毛骨悚然的东西),我发现显示搜索的最有用和不引人注目的方式是使用备受诟病的 iframe 作为工具栏。这允许用户在不窃取用户焦点的情况下加载搜索。

我不是 iframe 的特别忠实粉丝,我认为添加“关闭此框架”(ala Google 图片搜索)链接让用户快速轻松地重新获得对浏览器的控制权是微不足道的。

但是与谷歌不同,我不知道 iframe 中内容的位置是什么(仅通过 src 开始)。

所以现在我发现自己陷入了 XSS 的世界和所有与安全相关的问题。

使用 Javascript,我添加了“后退”和“前进”按钮以及从父级链接调用的历史对象(当用户进行搜索时,结果会加载到 iframe 中,因此后退按钮允许他们返回主完成使用/阅读搜索结果后的网站)。

有什么方法可以调用 iframe 中的当前位置并将页面(现在没有框架)重新加载到该位置?

我检查了 PHP $GLOBAL/$_SERVER 变量,看看我可能会走运。我知道存在安全问题,但我看不出这个特定的函数与 history.back() 有什么不同,浏览器在没有“通知”我的父框架的情况下自行调用。

我知道我可以从 iframe 本身检索 src 位置,但当然假设用户没有导航到此页面之外,如果他们这样做,他们不介意丢失当前位置并被重定向回最初调用的页面框架(……啊……)。

似乎框架旨在窃取窗口,无法优雅地“突破”并保持用户会话的完整性。

难怪人们讨厌他们。:)

0 投票
3 回答
659 浏览

jquery - 在文件系统上运行的 HTML/Javascript 应用程序,安全问题

我正在整理一些业务人员可以在他们的本地文件系统上运行的小工具,因为我们不想为它设置主机。

基本上,它只是 HTML + Javascript(使用 jQuery)使用 REST 从第 3 方提取一些报告。

问题是,FF3 和 IE 不允许 ajax 调用,我得到:

显然这是一个 XSS 问题......我该如何解决它?返回的数据是 XML 格式。

我试图这样做:

编辑:要明确...我没有为此设置内部主机(太多繁文缛节),并且由于正在检索数据,我们不能在外部托管它。

编辑#2:一些测试表明我可以使用 IFRAME 来提出请求。有谁知道使用隐藏的 IFRAME 是否有任何缺点?

0 投票
5 回答
1544 浏览

html - 我应该清理托管 CMS 的 HTML 标记吗?

我正在考虑为客户启动类似 CMS 的托管服务。

实际上,它将要求客户输入文本,这些文本将提供给任何访问其网站的人。我计划使用 Markdown,可能与 WMD(SO 使用的实时降价预览)结合使用来处理大块文本。

现在,我应该清理他们对 html 的输入吗?鉴于只有少数人编辑他们的“CMS”,所有付费客户,我应该去掉坏的 HTML,还是应该让他们疯狂?毕竟,这是他们的“网站”

编辑:我为什么要这样做的主要原因是让他们使用自己的 javascript,并拥有自己的 css 和 div 以及不用于输出的东西

0 投票
3 回答
1323 浏览

jakarta-ee - HTTP 输入过滤器,例如 WebSphere 的 mod_security?

WebSphere 是否提供像 mod_security 这样的 HTTP 输入过滤器/防火墙?

我知道让 Apache 成为 WebSphere 的 HTTP 服务器前端是可能的,但这种类型的配置超出了我的影响。我们只能使用 WebSphere 本身可以做的事情。

编辑-澄清一下,我不是在这里寻找安全性的身份验证、授权或不可否认方面。我想要一个基于规则的 HTTP 防火墙,比如在 WebSphere 上运行的 mod_security。

另外,我知道在 1.x 版本中,Java 中有 mod_security 的部分实现。我们目前有一个定制的内部解决方案,它与工作类似,但不那么随意配置。谢谢!

0 投票
3 回答
615 浏览

javascript - 为什么这个远程脚本会导致 IE6 挂起?

请查看下面列出的 html,让我知道为什么 IE6 在尝试加载远程脚本时冻结(位于“ http://code.katzenbach.com/Default.aspx ”)。该脚本返回 JSONP 并执行标题中列出的“callbackFunction”。当它正确运行时,您会看到一个显示数字 1-500 的弹出警报。这在 FF3 和 IE7 中运行良好。我不明白为什么它在 Internet Explorer 6 中失败 - 处理器被固定并且一切都挂起。

自己运行它,如果您遇到同样的问题,请告诉我。我整天都在盯着这个问题。谢谢你的帮助。

安德鲁

0 投票
11 回答
15529 浏览

regex - 这组正则表达式是否完全防止跨站点脚本?

下面的代码无法捕捉到的危险示例是什么?

编辑:在一些评论之后,我添加了另一行,评论如下。请参阅 Vinko 在 David Grant 的回答中的评论。到目前为止,只有 Vinko 回答了这个问题,该问题要求提供可以忽略此功能的具体示例。Vinko 提供了一个,但我已经编辑了代码来关闭这个漏洞。如果你们中的其他人能想到另一个具体的例子,你会得到我的投票!

0 投票
4 回答
5019 浏览

php - PHP 中严格的 HTML 验证和过滤

我正在寻找对用户提交的 HTML 执行严格(白名单)验证/过滤的最佳实践。

主要目的是过滤掉可能通过 Web 表单输入的 XSS 和类似的恶意软件。次要目的是限制非技术用户输入的 HTML 内容的破坏,例如通过具有 HTML 视图的 WYSIWYG 编辑器。

我正在考虑使用HTML Purifier,或者通过使用 HTML DOM 解析器来完成我自己的流程,例如 HTML(dirty)->DOM(dirty)->filter->DOM(clean)->HTML(clean)。

你能描述这些或任何更简单有效的策略的成功吗?有什么需要注意的陷阱吗?

0 投票
12 回答
56263 浏览

security - 使用用户输入的 URL 处理安全和避免 XSS 的最佳方法

我们有一个高度安全的应用程序,我们希望允许用户输入其他用户可以看到的 URL。

这引入了 XSS 黑客攻击的高风险 - 用户可能会输入另一个用户最终执行的 javascript。由于我们持有敏感数据,因此永远不会发生这种情况至关重要。

处理此问题的最佳做法是什么?任何安全白名单或逃逸模式是否足够好?

关于处理重定向的任何建议(例如,在跟随链接之前的警告页面上的“此链接超出我们的站点”消息)

是否存在根本不支持用户输入链接的论点?


澄清:

基本上我们的用户想要输入:

stackoverflow.com

并将其输出给另一个用户:

我真正担心的是他们在 XSS 黑客中使用它。即他们输入:

alert('被黑了!');

所以其他用户得到这个链接:

我的例子只是为了解释风险——我很清楚 javascript 和 URL 是不同的东西,但是通过让他们输入后者,他们可能能够执行前者。

你会惊讶于这个技巧可以破坏多少个网站——HTML 更糟糕。如果他们知道处理链接,他们是否也知道清理<iframe><img>巧妙的 CSS 引用?

我在一个高度安全的环境中工作——一次 XSS 黑客攻击可能会给我们带来非常高的损失。我很高兴我可以生成一个正则表达式(或使用迄今为止最好的建议之一),它可以排除我能想到的所有内容,但这是否足够?

0 投票
3 回答
283 浏览

html - 你能在这里找到网络安全问题吗?

我有一个网页重定向到另一个网页,如下所示:

然后,Sponsor.php 页面会显示一个广告,其中包含一个“继续到您的页面”链接,该链接指向传入的 RedirectPage。是否存在可能由此产生的安全/欺骗问题?处理这个问题的最佳方法是什么?(请注意,用户没有登录到任何一个站点)

0 投票
2 回答
184 浏览

c# - 为单个 Web 应用程序页面注销用户

这是我之前的 XSS 问题的扩展。

假设没有足够强大的正则表达式来保证用户输入的 URL 的 XSS 安全,我正在查看使用重定向。

(虽然如果你有一个,请在另一个问题下添加它)

我们有用户输入的网址,所以:

stackoverflow.com

他们希望为其他用户显示一个链接,因此:

为了降低黑客攻击的风险,我打算使用警告页面,因此链接变为:

然后在该页面上会有一条警告消息和一个指向原始链接的普通链接:

由于我们使用了很多 Ajax,我想让离开站点的页面成为一个有围墙的花园,理想情况下,基本上只在该页面中注销用户。我希望他们在原始页面上保持登录状态。

然后,如果有人确实通过了 santisation Regex,他们将无法以受骗用户的身份访问任何内容。

有人知道怎么做吗?是否可以在不全部注销的情况下注销一个窗口/选项卡?我们支持 IE 和 FX,但理想的解决方案也适用于 Opera/Chrome/Safari。