2016-10-01 154 views
0

应用程序具有前端和后端模块,前端调用Java/Spring后端的rest服务。 是否有任何最佳实践如何检测不是由前端生成的恶意请求(如果某些用户试图通过其他客户端从后端直接调用服务)?恶意请求检测/验证请求

可能为前端的每个请求生成一些哈希值,并在后端解密此值以验证此请求?

回答

0

你需要的是验证。后端需要验证前端Web应用程序或用户本身。

最常见的方式可能是对前端进行身份验证,这实际上意味着前端和后端具有共享密钥,每次调用都会发生身份验证,后端会信任前端。这可以通过http基本认证(当然是通过https)到某种api密钥机制(签名请求等)以无数方式实现。根据您的用例和威胁模型,您不必重新发明轮子,基于https的http基本身份验证可能就足够了。

另一种做事的方法是将用户凭证委托给后端服务。这通常通过将用户的单点登录令牌传递给后端来实现,当前端调用后端服务时有效地模拟用户。可以说这更安全,例如它不需要Web和应用程序之间的信任级别,但服务仍然需要信任发布令牌的SSO组件。重点在于攻击者窃取(更不用说来自前端服务器,这可能是一个更简单的目标)没有什么秘密,所以攻击者可能更难以向后端服务发出请求,即使后端和后端/或前端服务器已经被入侵。

所以,虽然我认为这里的答案不是正确的格式来详细说明如何进行此认证(实际上有多个好的解决方案,并且在每种情况下,实现细节都非常重要),至少在概念上这些是你的选择,我认为。

+0

感谢您的回复,但应用程序已经有认证和授权服务。 –

+0

那么问题是什么?认证和授权的目的是确保呼叫者是谁,只允许授权呼叫者执行操作。这适用于后端服务以及前端应用程序。 –