我刚刚在node中构建了一个API。
我在我的angular应用程序中调用此API来执行登录和注册等基本操作,例如:
self.register = function(username, password) {
return $http.post(API + '/auth/register', {
username: username,
password: password
})
}所以我的问题是,任何人都可以看到这个API URL,那么是什么阻止他们在那里随意创建用户。(注意API在我的JS文件中是一个常量)。登录也是如此,用什么来阻止某人暴力破解数百万个用户名和密码组合。
你有什么建议来确保这个安全吗?
谢谢。
发布于 2015-12-16 23:18:47
您可以使用一些模块保护,例如将nginx proxy放在nodejs API前面,并使用例如limit_req DDoS:http://nginx.org/en/docs/http/ngx_http_limit_req_module.html
对于暴力破解,你可以实现一些锁定逻辑,在错误数量之后,将阻塞帐户一段时间,例如15-30分钟,甚至需要管理员操作。
对于需要登录的API,可以使用token保护。应在调用身份验证API时颁发令牌,并在响应中通过仅HTTP安全cookie设置令牌。然后,您可以在API请求标头中传递此令牌,在nodejs中每次执行受保护的API之前,只需检查它是否有效,如果不是,则拒绝调用。
发布于 2015-12-17 00:56:49
在恐龙上加1。
如果你生活在云端,除了使用nginx之外,还有一个更好的基于云端的替代方案--使用云域防火墙(web application firewall)作为你的DDoS缓解层。例如,查看Incapsula和CloudFlare。
如果DDoS对您来说是一个严重的问题,并且您愿意支付防御它的费用,这是我绝对会留给专家的一个问题。
发布于 2016-01-15 12:49:51
你问的是注册滥用和登录保护,基本上是:
如何减轻帐户创建automation?
谢天谢地,这些都是已经解决的问题。
为了避免注册“猛烈抨击”,你需要打乱自动化。这可以通过各种方法来实现,从宽松到严格:
如果应用程序接口仅供特定的应用程序/浏览器访问,您可以通过传递CAPTCHA
),过滤掉所有其他CAPTCHA
这样做的好处是,1-3是可以轻松卸载到现代Web Application Firewall的任务,而不需要任何额外的服务器端编码或额外的负载。
对于“登录保护”,除了上述方法1-3外,还推荐两种方法:
的更多信息
在我离开之前,我要说一句话:我之前看过一些关于DDoS的评论,我再怎么强调也不为过--你自己是无法减轻DDOS的。但这是针对不同的线程的。
祝好运!
https://stackoverflow.com/questions/34315318
复制相似问题