4

如果我要创建一个通过以下方式处理登录的应用程序,我应该担心什么:

http://api.myApp.example/printSomething/username/password/

与基于发布的用户详细信息(用户名+密码)的普通登录页面相比,它有多不安全?有区别吗?

谢谢

4

3 回答 3

11

不要那样做。使用 POST 方法代替。你不应该在 URL 中允许敏感信息。

于 2010-07-04T15:50:57.527 回答
10

不同之处在于密码在地址栏中可见,并且用户从您的站点访问的任何站点都可以在 REFERER 标头中看到用户的密码。

于 2010-07-04T15:53:16.510 回答
2

实际上,这并没有太大区别,您只是让攻击者更容易搞砸。

但是: URL 通常保存在浏览器历史记录、日志等中,这意味着任何有权访问浏览器(或有权访问 URL)的人都可以看到用户名和明文密码。

更新:

关于问题的标题并澄清我的回答:

GET和请求都POST可以很容易地被利用来进行暴力攻击。使用GET,您可以使攻击者更容易手动执行此操作,但大多数情况下这些是自动攻击,即执行这些请求的应用程序,因此使用的 HTTP 方法完全不相关。

您永远无法通过选择一种 HTTP 方法而不是另一种来防止暴力攻击。
您必须在服务器端执行此类操作,例如限制一个 IP 每分钟的访问次数。

于 2010-07-04T15:53:02.390 回答