如果我要创建一个通过以下方式处理登录的应用程序,我应该担心什么:
http://api.myApp.example/printSomething/username/password/
与基于发布的用户详细信息(用户名+密码)的普通登录页面相比,它有多不安全?有区别吗?
谢谢
如果我要创建一个通过以下方式处理登录的应用程序,我应该担心什么:
http://api.myApp.example/printSomething/username/password/
与基于发布的用户详细信息(用户名+密码)的普通登录页面相比,它有多不安全?有区别吗?
谢谢
不要那样做。使用 POST 方法代替。你不应该在 URL 中允许敏感信息。
不同之处在于密码在地址栏中可见,并且用户从您的站点访问的任何站点都可以在 REFERER 标头中看到用户的密码。
实际上,这并没有太大区别,您只是让攻击者更容易搞砸。
但是: URL 通常保存在浏览器历史记录、日志等中,这意味着任何有权访问浏览器(或有权访问 URL)的人都可以看到用户名和明文密码。
更新:
关于问题的标题并澄清我的回答:
GET
和请求都POST
可以很容易地被利用来进行暴力攻击。使用GET
,您可以使攻击者更容易手动执行此操作,但大多数情况下这些是自动攻击,即执行这些请求的应用程序,因此使用的 HTTP 方法完全不相关。
您永远无法通过选择一种 HTTP 方法而不是另一种来防止暴力攻击。
您必须在服务器端执行此类操作,例如限制一个 IP 每分钟的访问次数。