我的朋友有一个登录表单的网站.. 我发现它使用json和ajax登录...
我检查了chrome控制台,发现在提交表单时通过网址显示用户名和密码(通过ajax)......
就是这样......
https://somesite.com/Login/LoginAct.asp?callback=jsonp1381741574696&_=1381741716152&user_id=reigel&user_pw=butterfly143&returnUrl=https%3A//somesite.com/Login/Login.asp
如果成功则返回jsonp1381741574696({'Result': '1'})
,如果登录失败则返回jsonp1381741574696({'Result': '-100'})
现在我的问题是,我只是有点好奇,这不是很容易受到一些暴力攻击吗?
我想向朋友指出这一点,但我不确定我是对还是错......
请赐教......
答案 0 :(得分:1)
是的,它很容易受到强力攻击,因为“黑客”可以使用不同的密码向您的系统发送请求,另一个问题 - 这种方式的URL很容易被中间系统破坏,您需要将其更改为POST方法
无论如何,POST也无法帮助对抗蛮力,你需要某种服务器端保护
答案 1 :(得分:0)
一切皆有可能,以便您尽可能确保更好。为什么你不做POST请求?由于GET请求可见。
答案 2 :(得分:0)
这绝对是你想引起朋友注意的事情。登录表单未正确处理。我对你朋友的实施感到好奇。也许有理由他选择使用get over post?
答案 3 :(得分:0)
在MD5算法之前转换密码。 观点: http://code.google.com/p/crypto-js/
答案 4 :(得分:0)
我会说是的,当且仅当你可以发送你想要的网址时。
攻击者可以继续更改网址中的pw并继续尝试直到他获得成功结果如果之后(我会说3次)显示另一条消息说有很多不良尝试而你需要等待x再次尝试蛮力攻击之前的分钟数不会有利可图。
首先我想知道他为什么用Get命令而不是post命令来尝试它,但是如果某个get命令在某种程度上是必要的(不知道为什么会这样),他应该真正关注以下内容(实际上他应该停止他正在做的事情,并确保以正确的方式完成它:)
如果他坚持要保留他现在使用的方法,我建议你的朋友做两件事:
第一,密码需要进行散列和加密,因此从按下“输入按钮”的那一刻起,密码框中的文本需要加密,因此它不会在URL中显示为纯文本。 如果您想了解有关安全存储和使用密码的更多信息,我建议您阅读以下文章: Best way to store password in database第二件事是他可以测试他自己只是获取一个URL并提交它,然后更改它并再次提交它,如果你可以一遍又一遍地执行此操作,暴力攻击是打破这种安全的简单方法,如果经过几次尝试(通常我会说3次),你会得到一个不同的结果:jsonp1381741574696({'Result': '-100'})
例如,结果表明你已经多次尝试过,我会说它是安全的。