-1

我有一个朋友有一个带有登录表单的网站。我发现它使用 json 和 ajax 登录...

我检查了 chrome 控制台,发现当您提交表单(通过 ajax)时,用户和密码在 url 中可见......

是这样的……

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'})如果登录失败,将返回...

现在我的问题是,我只是有点好奇,这不是很容易受到一些蛮力攻击吗?

我想向我的朋友指出这一点,但我不确定我是对还是错......

请赐教...

4

5 回答 5

1

是的,它很容易受到暴力破解,因为“黑客”可以使用不同的密码向您的系统发送请求,另一个问题 - 这种方式的 URL 很容易被中间系统破坏,您需要将其更改为 POST 方法

无论如何,POST也无助于暴力破解,您需要某种服务器端保护

于 2013-10-14T10:16:24.373 回答
0

当且仅当您可以根据需要发送网址时,我会说是的。

如果在(我会说 3 次)之后显示另一条消息说有很多错误尝试并且您需要等待 x 次在再次尝试蛮力攻击之前的几分钟将不会有利可图。

首先我想知道他为什么用 Get 命令而不是 post 命令来尝试它,但是如果 get 命令在某种程度上是必要的(不明白为什么会这样),他应该真正注意以下内容(实际上他应该停止无论他在做什么,并确保以正确的方式完成):

如果他坚持保留他现在使用的方法,我会建议你的朋友做两件事:

首先,需要对密码进行散列和加盐处理,因此从按下“输入按钮”的那一刻起,密码框中的文本需要加密,因此它不会在 URL 中显示为纯文本。如果您想了解有关安全存储和使用密码的更多信息,我建议您阅读以下文章: 将密码存储在数据库中的最佳方式

第二件事是他可以测试自己,只需获取一个 URL 并提交,然后更改它并再次提交,如果你可以一遍又一遍地这样做,那么暴力攻击是破坏这种安全性的简单方法,但是,如果在几次尝试(通常我会说 3 次)你会得到不同的结果:jsonp1381741574696({'Result': '-100'})例如,一个结果表明你已经尝试了很多次,我会说它是安全的。

于 2013-10-14T10:31:09.727 回答
0

一切皆有可能,因此您最好尽可能确保。为什么不做 POST 请求?由于 GET 请求是可见的。

于 2013-10-14T10:17:19.567 回答
0

这绝对是您想引起朋友注意的事情。未正确处理登录表单。我很好奇你朋友的实现。也许他选择使用 get over post 是有原因的?

于 2013-10-14T10:17:44.007 回答
0

在MD5算法中转换之前的密码。查看: http ://code.google.com/p/crypto-js/

于 2013-10-14T10:25:39.437 回答