使用SMTP.js时如何隐藏Gmail的SMTP密码
所有运行在浏览器端的JavaScript代码对用户都是完全可见的,不存在任何方法可以在纯前端公开静态站点中硬编码Gmail SMTP密码同时避免泄露,任何混淆、加密的手段都只能提高破解门槛,无法从根源解决问题,密码泄露只是时间问题。smtp.js本身并不适合用在公开可访问的前端站点中,仅适合内网自用、仅个人可访问的工具类页面。
可行的替代方案
- 用无服务器函数做中转层
主流静态站点托管平台都自带免费额度的无服务器函数能力,你可以将SMTP密码保存在服务端的环境变量中,永远不会暴露到前端。前端仅需要向你自己的无服务器函数发送邮件主题、内容、发件人联系方式等必要参数,由服务端完成SMTP请求发送邮件,你还可以在服务端增加请求频率限制、参数校验规则,避免接口被恶意调用刷量。 - 使用第三方表单邮件服务
你可以选择专门的前端表单提交服务,这类服务会提供公开的提交接口,你只需要在服务后台配置好接收邮件的地址,前端直接将表单内容提交到对应接口即可,全程不需要在前端代码中写入任何敏感凭证。 - 借助公开表单工具实现邮件通知
如果你不想额外开发服务端代码,可以使用通用的表单产品创建信息收集表单,配置好提交后自动发邮件通知你的规则,前端直接通过JS提交数据到对应表单的公开提交地址,也能实现同样的需求,不会泄露任何个人凭证。
风险提示
不要尝试在公开站点的前端代码中硬编码SMTP密码,哪怕你做了代码混淆、字符串加密,对应的解密逻辑也会一同打包到前端代码中,攻击者可以轻松提取到明文密码。一旦密码被滥用,你的Gmail账号会被直接封禁,甚至可能承担发送垃圾邮件、诈骗邮件的相关责任。
内容的提问来源于stack exchange,提问作者Matan L.
相关产品推荐
相关产品推荐

