Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rest 如何在以API为中心的Web应用程序中防止CSRF_Rest_Security_Api Design_Csrf Protection - Fatal编程技术网

Rest 如何在以API为中心的Web应用程序中防止CSRF

Rest 如何在以API为中心的Web应用程序中防止CSRF,rest,security,api-design,csrf-protection,Rest,Security,Api Design,Csrf Protection,我希望使用以API为中心的体系结构构建一个web应用程序 应用程序的前端将使用AJAX向RESTAPI发出请求 该API也被其他客户端用于各种目的。我认为CSRF令牌的使用可能不适用于它们的实现 其他方法包括验证报头中的来源,但当然,报头很容易被欺骗 如何为这个应用程序实现一个健壮的CSRF预防策略?一些建议:首先,您可以使用api url,比如GET api/gime CSRF,它返回CSRF令牌作为响应,还可以在http onlycookie中设置它(因此JS无法访问它-但请记住在服务器中阻

我希望使用以API为中心的体系结构构建一个web应用程序

应用程序的前端将使用AJAX向RESTAPI发出请求

该API也被其他客户端用于各种目的。我认为CSRF令牌的使用可能不适用于它们的实现

其他方法包括验证报头中的来源,但当然,报头很容易被欺骗


如何为这个应用程序实现一个健壮的CSRF预防策略?

一些建议:首先,您可以使用api url,比如
GET api/gime CSRF
,它返回CSRF令牌作为响应,还可以在
http only
cookie中设置它(因此JS无法访问它-但请记住在服务器中阻止跟踪请求以防止XST攻击). 然后,当您发出一些“保存状态”请求(如POST/PUT/PATCH)时,您只需将CSRF放在一些请求头中,然后在服务器中比较头令牌值和cookie令牌值。

您的API如何对客户端进行身份验证?不记名代币?cookie中的会话id或令牌?