0

我正在开发一个非常简单的网站。我通常会做一个完整的管理员来编辑网站,但这次我考虑的是就地编辑 (contenteditable="true")。

为了简化用户的登录,我只想给他一个密码,他可以在地址栏中输入密码来登录,而不是通常的登录表单。所以他会访问 domain.com/page?p=the_password 然后我会将他的数据存储在一个会话中并给他一个带有会话 ID(通常的东西)的 cookie 并将他重定向到 domain.com/page。

这有多安全/不安全?我在 PHP 中执行此操作,但我想它适用于任何服务器端语言。

4

2 回答 2

2

您的登录想法是不安全的:请求的 URL 最终会出现在 Web 服务器日志和其他地方,这意味着密码最终会出现在 Web 服务器日志中。

您的“contentedittable”想法可能不安全,但方式更微妙。它也(再次,可能)不符合 HTTP 规范。

GET请求应该始终是幂等的。这是因为用户代理(浏览器、缓存等)可以在GET未经用户同意的情况下多次重新发出相同的请求。浏览器可能会这样做的一个原因是因为用户按下了后退按钮并且前一页不再在缓存中。如果请求不是幂等的,那么第二次发出它可能会产生意想不到的副作用。

听起来您的“就地编辑”功能可能并不总是幂等的。有许多种简单的编辑实际上是幂等的,所以我可能是错的,但只要你有能力通过这种界面将新项目添加到列表中,它就不是了。

非幂等请求应通过 、 和 等PUT方法POST发出DELETE

于 2012-09-27T13:33:54.857 回答
1

添加到@Celada 答案。URL 将存储在浏览器历史记录或网络缓存/代理中,因此密码可能会以这种方式泄漏。此外,以其他人身份登录随机 Internet 用户(登录跨站点请求伪造攻击)也是微不足道的,例如拥有一个带有指向 domain.com/page?p=the_password 的 img 元素的网站

你不会写这个,但是一旦用户登录,你的方案需要防止跨站点请求伪造(所以随机页面不能对登录用户的行为执行管理操作)。

于 2012-09-27T19:04:21.643 回答