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