2016-06-28 195 views
0

我们有一个ASP.Net web应用程序,我们正在考虑转移到另一个堆栈,如Python或Ruby。我们不希望一次性替换整个应用程序,而是希望逐渐替代暴露的REST API。我们的想法是在现有的.Net应用程序的一侧运行新的Web应用程序,并在我们实施时发送一些Ajax请求。跨平台CSRF

我的问题是: 是否有任何跨平台的CSRF库可以用来验证.Net端和Python/Ruby/Node堆栈上的请求?

理想情况下,一旦在新堆栈中实现了API端点,我们只需将REST端点指向新的url即可。

+1

您可以使用简单的技巧实现自己的功能,例如[Double Submit Cookies](https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet#Double_Submit_Cookie) - 两边的代码应该相当直接并且可以互操作。 – SilverlightFox

+0

这正是我想要的!谢谢! – Jonathan

+0

添加为答案,因为它解决了您的问题! – SilverlightFox

回答

1

你可以使用一种简单的技术来实现你自己的,比如Double Submit Cookies--双方的代码应该相当直接并且可以互操作。

双重提交Cookie通过设置随机值(希望由CSPRNG生成或使用其他不可预知的方法)作为cookie和隐藏表单字段。

因为任何攻击者由于Same Origin Policy而无法从隐藏表单字段中检索到该值,因此在cookie值与隐藏表单字段相同的情况下,无法发送跨站点请求。在Cookie中存储值无需存储任何服务器端的内容。

因为这是一个简单的检查,可以很容易地在两个框架中实现(伪代码:if cookie != hidden_field then <reject>),它应该很容易实现。