Node.js 注册表格RESTAPI最佳实践

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端点,我如何避免有人编写脚本来创建一大堆租户并攻击我的应用程序 我想使用某种形式的确认电子邮件,但这是注册新租户时

我正在使用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
  • 作为一个Python迷,下面是我在Django中实现此解决方案的一个示例(参考:):

    1。准备就绪

    安装并验证web服务器

    此codelab可以在本地运行,也可以通过中的gcloud shell运行 谷歌云平台。要开始使用gcloud shell,请访问

    下载代码

    克隆此codelab的所有代码:

    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(