2012-05-10 68 views
3

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

作为路由器的任何用户可以找出服务被称为

+1

风险与任何其他Web应用程序(或客户端/服务器应用程序)相同。没有什么特别的Backbone。 –

回答

6

的秘诀,确保主干网应用程序,或任何其他客户端,是你不依赖于客户端验证。一定要在服务器上验证。

例如,如果你要建立一个银行应用程序,你不会用骨干到用户的账户之间转移$ 100,然后发送回服务器的新账户余额为模型的更新。您将向服务器发送用户转移$ 100的意图,并让服务器发回新的余额。通过这种方式,服务器可以安全地确定用户在账户之间进行转账的权限,确定是否有足够的资金存在等。

客户端验证非常适合帮助减少往返并向用户提供即时反馈,但不应该认为它是保护应用程序的一种方法。例如。验证电子邮件地址的格式或客户端密码的强度,然后将其发送到服务器(应在服务器端再次验证它)是客户端验证的一个很好的示例。

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

5

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

我看到其中(散列)密码被发送到客户端的例子。

1

当您保护主干应用程序时需要考虑的一件事是访问应用程序本身。

建立一个认证页面,用户输入自己的登录名/密码,那么如果通过身份验证,设置cokkie会话ID。

例如,如果你有渲染上http://mydomain.com/app主视图,你必须使用的cookies验证,以确保进入“/应用程序”。

例如,如果你的后端是的NodeJS:

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

什么的loggedIn将FO基本上是检查你是否在你的cookies有一个会话ID。如果是,它将允许您访问您的应用程序,否则会向用户提示“未经授权的访问”消息。

正如前面提到的,客户端验证是很重要的,但你必须使用服务器端验证,重新执行它。

Web服务的HTTPS也很重要。