无用户输入情况下窃取Cookies?

1 投票
2 回答
1391 浏览
提问于 2025-04-15 21:50

我正在制作一个静态网站生成器,里面有一个动态的后台管理系统,只供一个用户使用。这个网站不接受任何用户输入。这是不是意味着我可以放心,不用担心攻击者会偷走我的管理员cookie呢?

(因为没有用户输入,所以像XSS这样的攻击方法应该不管用,对吧?)

2 个回答

0

下面这个功能存在一个安全隐患。这可能是一个黑客利用CSRF(跨站请求伪造)进行攻击的途径。恶意的JavaScript代码可能通过一种叫做CSRF->Stored XSS的攻击方式被引入。

这里有一个“管理员控制面板”,我可以在这里编辑已有的内容或者添加新的内容。

问题在于,当你已经登录这个管理控制台时,黑客仍然可以通过“借用”你的登录状态来访问这个功能,这就是CSRF的基本原理。简单来说,攻击者不需要知道你的会话ID,因为你的浏览器知道!通过访问一个恶意网站,攻击者可以强迫你的浏览器向你的管理控制台发送一个HTTP请求。为了成功进行这种攻击,攻击者必须知道服务器地址、脚本路径以及所有的POST/GET参数,但他不需要你的密码或cookie。如果这是一个内部的管理控制台,这种攻击的可能性就比较小。但防御起来也很简单。最简单的方法是检查发起“内容修改”的HTTP请求的referer,摩托罗拉就对他们的许多网络设备这样做。更常见的方法是使用“csrf令牌”。

如果你通过.htaccess文件或基于cookie的认证使用基本认证,CSRF问题依然存在。无论如何,你都需要防止恶意伪造请求,并通过使用HTTPS来保护自己免受数据嗅探。这方面的详细信息可以在OWASP十大安全风险中找到,确保阅读“A3: 破损的认证和会话管理”。

1

如果没有用户输入(比如没有可以点击的链接等),那么管理员后台怎么能算是“动态”的呢?

其实,基本上来说:不,除非你在用HTTPS。即使你不接受任何输入,cookie还是会以明文形式传输,这样就可能被别人截获(比如中间人攻击等),然后被用来访问你的信息。(我想你不希望其他人用这个cookie来看管理员的内容吧。)

或者我完全误解了这个问题?;-)

撰写回答