$ https请求的安全性

时间:2016-05-15 09:31:16

标签: javascript angularjs yii ionic-framework

早上好,

我正在开发一个离子应用程序,并且有一些$ http请求(角度)将数据发送到服务器控制器(yii 1)以保存数据库上的数据。我完成了我的应用程序,但它没有安全性。我想知道如何保护它,因为现在任何人如果看我的$ http请求可以知道什么参数必须发送,并杀死我的应用程序。

我该怎么做才能保护它?也许通过令牌?我真的迷失了安全方法。

非常感谢你,

卡尔斯。

1 个答案:

答案 0 :(得分:0)

当您研究Web应用程序安全性时,您将遇到跨站点请求伪造(CSRF)。这种攻击媒介正在利用cookie,但是可以预防。

大多数攻击都集中在窃取您的Cookie,因为几乎每个网站都使用Cookie作为身份验证的一种形式。设置如下:当用户登录到您的服务器时,您在浏览器中设置cookie。此cookie包含唯一ID,该ID是数据库中用户会话信息的链接。浏览器在将来的请求中提供此cookie,服务器知道您是谁。

从表面上看,这听起来并不是那么糟糕,但这里有一个问题:即使最终用户没有自己执行操作,也可以欺骗网络浏览器向服务器发出请求。

使用POST请求

有时候人们认为使用适当的基于表单的POST请求可以缓解这种攻击,但事实并非如此。

使用仅限HTTP或安全的Cookie

虽然您肯定应该在会话cookie上使用这些标记,但它们不会隐式阻止攻击:当您向域发出请求时,浏览器仍会将cookie发送到您的域。您的服务器不知道这是真实用户还是攻击。

如何防止CSRF

您可以依靠一组浏览器所遵循的规则来实现这一目标,称为Same-Origin Policy。此策略声称某些敏感操作是由我们网站上运行的JavaScript代码执行的,而不是其他网站。

Angular打包CSRF令牌方法,使我们更容易实现。对于Angular应用程序对您的服务器的每个请求,Angular $ http服务将自动执行以下操作:

在当前域中查找名为XSRF-TOKEN的cookie。 如果找到该cookie,它会读取该值并将其作为X-XSRF-TOKEN标头添加到请求中。

因此,客户端实现将自动为您处理!但这确实会让服务器端部件丢失。您需要执行以下部分:

在登录期间:创建CSRF令牌(带有随机的,不可猜测的字符串),并将其与用户会话相关联。您需要在登录响应中将其作为XSRF-TOKEN cookie发送。 断言所有对API的传入请求都有X-XSRF-TOKEN标头,并且标头的值是与用户会话关联的标记。

就是这样!通过一些后端工作,您现在可以采取一种策略来保护您免受CSRF攻击。

你会找到一个如何防止CSRF攻击的工作示例here 对于理解CSRF攻击的理论,请遵循reference