Node.js 注册表格RESTAPI最佳实践
我正在使用MEAN stack构建一个SaaS应用程序,并且有一些关于如何最好地保护注册表单的问题。Express.js是我用来生成端点的工具(通过angular fullstack) 我有“租户”使用登记表(姓名、电子邮件、密码等)进行登记。此REST API当前不安全(POST/租户) 我的问题是:Node.js 注册表格RESTAPI最佳实践,node.js,rest,express,mean-stack,angular-fullstack,Node.js,Rest,Express,Mean Stack,Angular Fullstack,我正在使用MEAN stack构建一个SaaS应用程序,并且有一些关于如何最好地保护注册表单的问题。Express.js是我用来生成端点的工具(通过angular fullstack) 我有“租户”使用登记表(姓名、电子邮件、密码等)进行登记。此REST API当前不安全(POST/租户) 我的问题是: 我应该设法保住这个职位吗?如果是,怎么做 如果我不想保护POST/tenants端点,我如何避免有人编写脚本来创建一大堆租户并攻击我的应用程序 我想使用某种形式的确认电子邮件,但这是注册新租户时
谢谢 您应该彻底检查开放式Web应用程序安全项目(OWASP)及其漏洞。那里有很多信息。我还建议遵守他们的原则。此资源是一个有助于起步的地方。Web安全性非常复杂,要求您在保护方案中做到全面。我选择了reCAPTCHA解决同样的问题 引用将reCAPTCHA集成到站点跟踪的概述。值得注意的是,Google的reCAPTCHA codelab还包括一个Java示例 概述 要开始使用reCAPTCHA,您需要配对 为您的网站。密钥对由站点密钥和密钥组成。这个 站点密钥用于在站点或移动设备上调用reCAPTCHA服务 应用密钥授权您的计算机之间的通信 应用程序后端和reCAPTCHA服务器。为了安全起见,这把秘钥需要妥善保管 目的 首先,选择“已授权”,然后填写“已授权” 域或。在您接受我们的服务条款后, 您可以单击“注册”按钮以获取新的API密钥对 现在,请执行以下步骤将reCAPTCHA添加到您的站点或 移动应用程序:
- 雷帕查v2
git克隆https://github.com/googlecodelabs/recaptcha-codelab.git
对于Python:
cd recaptcha-codelab/phase1-python
python server.py
在网上
在浏览器中,转到以查看不带
reCAPTCHA集成
2。在reCAPTCHA管理控制台注册
。。。如果你有
完成并在中创建自己的注册的时间
管理控制台。在开发或生产中使用reCAPTCHA之前
您将需要执行此步骤
先去
选择“不可见的重新捕获”作为验证码类型。
填写要显示验证码的域列表。reCAPTCHA站点
您创建的密钥仅在这些域上有效。保存站点密钥和
后期阶段的密钥。
3。将不可见的reCAPTCHA添加到前端-Python
让我们更新前端,用您的
最喜欢的文本编辑器
首先,让我们向中的html元素添加一个脚本标记
feedback.html
feedback.html
建议页
现在更新提交按钮的属性。添加
class='g-recaptcha'
data sitekey=“您的站点密钥”
并添加
数据回调
feedback.html
提交
完整文件应为:
feedback.html
建议页
函数onSubmit(){
document.getElementById(“演示表单”).submit();
}
身体{
字体系列:Helvetica,无衬线;
}
.状态信息{
背景色:#5ff;
边缘底部:10px;
文本对齐:居中;
}
文本区{
利润率:10px0;
调整大小:无;
}
在我们的网页上给我们反馈!
%
您的评论
提交
3。在服务器上验证不可见的reCAPTCHA-Python
在“向reCAPTCHA管理控制台注册”中,我们创建了一个新的
站点密钥。作为该过程的一部分,创建了一个站点机密。场地
验证验证码解决方案需要保密。为了
在此代码实验室中,您可以使用提供的默认键。这些将
仅在本地主机上工作
reCAPTCHA令牌的验证通过发送POST来完成
请求。这个
详情请参阅
为了验证reCAPTCHA令牌,让我们更新服务器。首先我们
需要添加站点机密和站点验证常量
server.py
SITE\u VERIFY\u URL='1〕https://www.google.com/recaptcha/api/siteverify'
站点_SECRET='6LfeHx4UAAAAAFWXGh_xcL0B8vVcXnhn9q_SnQ1b'
RECAPTCHA_响应_参数='g-RECAPTCHA-RESPONSE'
然后我们需要更新POST处理程序来验证令牌
server.py
def do_POST(self):
self.set_headers();
post_body=parseqs(self.rfile.read(int(self.headers['Content-Length']))
成功=错误
如果在post_正文中重述CHA_响应_参数:
token=post_body[RECAPTCHA_RESPONSE_PARAM][0]
resp=urllib.urlopen(
站点\验证\ URL,urllib.urlencode(