gpt4 book ai didi

asp.net - 将 XSS 易受攻击的应用程序的风险降至最低的方法?

转载 作者:行者123 更新时间:2023-12-02 05:19:21 24 4
gpt4 key购买 nike

我正在为本地托管公司开发票务系统,其中一项要求是用户能够提交包含实际 html 的票证。这将是一个有效的输入。

<html>
<head>
<script>alert('hello!');</script>
</head>
</html>

可以通过在线提交或进入系统的电子邮件将此输入放入系统。

此外,业务需求之一是那些查看票证的人能够看到 html 版本为 html,因此以某种方式将其呈现给浏览器是一项业务需求。

现在,我明白了,我绝对没有办法保护这个系统。我在力所能及的地方做了很多工作来保护它,但考虑到当前的业务需求,这个特定的安全漏洞无法修复。

我什至无法想象将这些东西列入白名单,因为用户可能正在描述一个嵌入了脚本标签的 html 页面、一个 web.config 文件、一个 XML 文件、一个 odf 文件,随便你怎么说,他们可能有一个用户已经发送了一个例子。

我不习惯编写要求如此“开放”的软件,而且我不确定如何最好地解决这个问题。我目前的想法是风险管理而不是风险预防,我认为没有其他方法可以有效地限制这种情况下的恶意输入。但是,如果有人对我如何根据当前要求进行某种预防有任何建议,我会洗耳恭听。因为我确定有人会提出来,所以我还要说我已经与我签约的公司的所有者进行了坦诚的交谈,并且要求不会很快改变:)

我想听听处理过这种情况的人的意见,以及您可以根据这种经验提供什么建议。我对理论并不感兴趣,但对实践感兴趣。我的部分目标是向所有者提出可靠的建议,看看我们可以做些什么来在整个安全性和便利性之间做出权衡。

另请记住,该系统最终将出售给他们的客户,这意味着我无法做出许多假设。目前,该系统是为他们专门构建的,但随着时间的推移,我们现有的许多假设最终将被删除或推广。

我的第一个想法是对传入电子邮件进行某种风险评估,如果电子邮件达到阈值,则会自动实现某些限制。诸如无法在浏览器中查看 html 版本、在文本编辑器而不是浏览器中打开它之类的事情。我担心的是,这可能会给用户带来痛苦,而且我实现的任何解决方法(“批准电子邮件”)都会在没有任何实际考虑的情况下使用,这使得它毫无值(value)。

我也考虑过“受信任的区域”,我的意思是,来自新电子邮件地址的票证受到限制,直到来自该地址的票证数量为 X,通过网络界面之类的。在许多方面,这与其他解决方案存在相同的问题。

另一种解决方案是顺其自然。这显然是最简单的解决方案,也可能是有效的解决方案,但在接受之前我需要一个非常有力的论据。

我不介意拿出一个 HTML 解析器并亲自查看电子邮件中的特定内容,但我不相信有任何自动化的方法可以保护这个系统而不会出现误报,所有者已经明确表示这是完全正确的 Not Acceptable 。据我所知,谁只想通过电子邮件发送支持却从未收到他们的消息?

过去解决过这个问题的人的任何建议或见解将不胜感激。我使用的具体技术是 ASP.Net 4.5/IIS

最佳答案

对我来说,第一个答案是显而易见的:不要那样做。不要让他们提交任意 HTML/JS,然后将其呈现给经过身份验证的客户端。我无法完全想象有必要这样做的场景。

第二个最明显的答案是 Guffa 的答案:如果你渲染它,那么计划是在一个环境中渲染它,在这个环境中它不能使用任何经过身份验证的特性,窃取 cookie 或重定向到经过身份验证的操作,并且什么不是。 IE。执行呈现的页面未经过身份验证,不需要 cookie 即可查看(或类似方法)。然而,他们仍然有可能任意编写恶意 JavaScript,这可能 - 完全靠自己 - 做坏事。例如,您可以获取他们的任何输入,将其呈现为纯 .HTML 文件,查看者必须在其浏览器中本地打开(即未托管);这仍然很糟糕。

所以总的来说,这是一个非常糟糕的主意,我不会这样做。典型的出路是强制任何提交的数据结构良好(例如在这个论坛上),这样您就可以以适当的方式处理特定的位。这可能是他们想要的——也就是说,他们只是不想限制输入;但也许您应该为某些类型的输入(代码示例,等等)设置一个单独的区域。

所以总而言之:避免这种情况;你可以在某些方面稍微改善你的情况,但它基本上仍然会很糟糕。

关于asp.net - 将 XSS 易受攻击的应用程序的风险降至最低的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14131365/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com