我想收集通过第三方网站的电子邮件地址,并订阅到一个Sendgrid邮件列表。
流动:
用户转到由unbounce.com托管的网站,该网站使用我的网站的域
->在我的域名test.com托管的iframe中输入他们的电子邮件地址
->回答reCaptcha问题
->在后端,我们向Google发出请求,以验证用户的响应。
安全关切:
在从您的站点上未经身份验证的页面收集电子邮件地址时,是否还有其他安全问题需要解决?
另外,reCaptcha是否足以解决将这样一个API端点暴露给外部世界的问题?
为了解决这个问题,我还需要考虑其他的解决方案或其他安全问题吗?
收集来自感兴趣的第三方的电子邮件地址,通过一个未经认证的网页规模。
发布于 2018-03-18 00:57:03
这问了很多问题..。我会尽我所能提出解决方案。
这个问题得到普遍接受的解决方案是双重选择.用户提交电子邮件后,向他们发送带有验证链接的电子邮件。您的Captcha解决方案应该有助于减少验证链接垃圾邮件,但您也可以限制电子邮件的数量发送到一个给定的地址在给定的时间内。
这是一个相当模糊的考虑,一个好的答案取决于您试图保护谁从DDOS。我也不太熟悉DDOS保护方案,所以我将介绍一下这一部分。
这将在很大程度上取决于如何和在哪里存储电子邮件地址的细节。从本质上讲,这部分的解决方案分为两部分:
访问控制是限制人们检索信息能力的实践。例如,您的网站主页通常没有访问控制。但是,如果您有一个管理页面,这将需要用户名和密码登录才能查看该页面。
MongoDB默认设置中缺乏访问控制,导致数千个数据库遭到破坏,这些数据库被人们不适当地暴露在互联网上。
鉴于访问控制的形式如此之多,如果没有更多的信息,就很难提供关于访问控制的指导。从概念上讲,只需确保有一些步骤,在检索信息的过程中,需要某种类型的秘密密钥,或者密码以获得对存储信息的访问。
加密是下一个防御级别,即使有人实际获得了电子邮件列表的访问权限,也需要一个额外的密钥来读取信息。数据库中的列级加密意味着,即使有人获得查询数据库的权限,他们也需要一个额外的加密密钥来读取地址。
这有一个副作用,您通常不能搜索加密的字段。因此,只有最敏感的信息通常用这种强加密方式存储.比如社会保险号码。
这是一个很简单的问题。使用HTTPS。假设是服务器端应用程序将电子邮件地址提交给Sendgrid,请不要忽略https请求上的证书错误。这就是你所需要做的。由于您委托Sendgrid保存电子邮件地址,您还需要信任他们正在安全地存储它们,并且已经在他们的列表管理API上正确地实现了TLS。
就您而言,为了保护您存储在第三方邮件列表服务中的电子邮件地址.保护你的账户钥匙。不要在源代码管理中存储API密钥。为您的用户帐户使用强密码。如果可用,请打开双因素身份验证。攻击者进入邮件列表应用程序的最简单方法不是破坏SendGrid,而是窃取您的密钥。
在从您的站点上未经身份验证的页面收集电子邮件地址时,是否还有其他安全问题需要解决?
请参阅上面关于双选择的部分。确认通过发送电子邮件来控制电子邮件地址的人,在给他们发送任何东西之前,在与邮件列表订阅者建立一段距离的关系时,你所需要做的就是全部。
如果你做的不仅仅是向他们推销--例如,他们是诊所的病人,你想和他们分享处方细节--最好是强迫他们先创建一个用户账户,然后用其他方式验证他们的身份。你需要以个人身份确认这些信息的类型通常不应该通过电子邮件发送。
另外,reCaptcha是否足以解决将这样一个API端点暴露给外部世界的问题?
在该场景中,reCaptcha将提供给您的是确认用户是个人,而不是自动脚本试图将被盗的电子邮件地址列表提交给您的服务以被垃圾邮件发送。这足以阻止你通过双重选择发送大量确认邮件。单靠reCaptcha并不能保护你不被别人的电子邮件提交到你的名单上。
是否有任何其他解决方案,我应该看看,或任何其他安全问题,以解决这个问题:收集电子邮件地址从感兴趣的第三方通过一个未经认证的页面规模。
您可能会发现另一个有用的工具是一个验证地址本身的系统。Mailgun 提供任何API.让他们的客户验证一些属性上的电子邮件,包括电子邮件是否真的指向一个有效的域。检查这将有助于您的系统避免有人填充您的验证系统的电子邮件,将难以反弹。
如果您正在发送任何有价值的信息,您也可能希望避免向邮递员这样的服务提供的任何域发送电子邮件,因为这些地址只是转到没有人拥有的可公开访问的邮箱。电子邮件验证API,如Mailgun的,也可能帮助您在这里,因为有人会花时间来管理这个不断变化的列表。
https://security.stackexchange.com/questions/181723
复制相似问题