3

在开发主干应用程序时可能面临哪些安全风险。有人可以告诉我减轻此类风险的最佳实践吗?

就像在路由器中一样,任何用户都可以找到被调用的服务

4

3 回答 3

6

保护 Backbone 应用程序或任何其他客户端的秘诀在于您不依赖客户端验证。一定要在服务器上验证。

例如,如果您正在构建一个银行应用程序,您不会使用 Backbone 在用户账户之间转移 100 美元,然后将新账户余额作为模型更新发送回服务器。相反,您将向服务器发送用户转移 100 美元的意图,并让服务器发回新余额。这样,服务器可以安全地确定用户在账户之间进行此类转账的授权,确定是否存在足够的资金等。

客户端验证有助于减少往返行程并向用户提供即时反馈,但不应将其视为保护应用程序的一种方法。例如,在将电子邮件地址发送到服务器之前验证客户端上的电子邮件地址格式或密码强度(应该在服务器端再次验证)是客户端验证的一个很好的例子。

至于 Web 服务,有不同的方法来保护它们。例如,您可以使用 HTTPS 或基于令牌的身份验证。

于 2012-05-11T04:18:19.717 回答
5

另一个问题可能是您暴露了太多数据。例如:不要返回完整的用户记录(以填充您的模型),而只返回您的应用程序实际需要的数据。

我已经看到将(散列)密码发送给客户端的示例。

于 2012-05-14T08:33:52.297 回答
1

保护主干应用程序时要考虑的是对应用程序本身的访问。

建立一个身份验证页面,用户在其中输入他的登录名/密码,然后如果验证通过,设置一个 cokkie 会话 ID。

例如,如果您在http://mydomain.com/app上呈现了一个主视图,则必须使用 cookie 验证来保护对“/app”的访问。

例如,如果您的后端是 nodejs :

app.get('/app', function(req, res, next){
  if(!loggedIn(req,res))
    sendError(res);
  else
    next();
});

登录后的内容基本上是检查您的 cookie 中是否有 sessionID。如果是,它将允许您访问您的应用程序,否则将向用户提示“未经授权的访问”消息。

如前所述,客户端验证很重要,但您必须通过使用服务器端验证来重新执行它。

Web 服务的 HTTPS 也很重要。

于 2012-10-12T06:55:08.897 回答