我正在使用Spring Boot和React.js SPA开发网络应用程序,但我的问题不是特定于这些库/框架的,因为我认为将客户端JS错误报告给服务器(以进行日志记录和分析)对许多现代网络应用程序来说都必须是常见的操作。
因此,假设我们有一个JS客户端应用程序捕获了一个错误,并且一个REST端点/errors
接受一个包含有关所发生事件的相关信息的JSON对象。客户端应用程序将数据发送到服务器,它被存储在数据库中(或其他地方),每个人都很高兴,对吧?
但现在我并不是真的很高兴。因为现在我有了一个开放API端点(就像允许未经身份验证的创建/写入操作),任何具有一点知识的人都可以轻松地进行垃圾邮件攻击。
我可能会验证端点接受的JSON数据结构,但那并不能真正解决问题。
在类似于“连接到数据库的开放式REST API-如何防止恶意用户垃圾邮件攻击我的数据库?”或“在用户身份验证之前保护REST服务”这样的问题中,有一些建议,例如:
- 访问配额(但我不希望保存IP或任何标识客户端的信息)
- 验证码(显然对于错误报告无用)
- 电子邮件验证(同样,请想象一下)
所以我的问题是:
- 有没有一种优雅、常用的策略来保护这样的端点?
- 像验证数据结构这样的轻量级解决方案在实践中是否足够?
- 所有这些都必要吗?毕竟我不会在应用程序中使用横幅广告我的错误处理API端点...