保护Aurelia的CSRF攻击

Sve*_*tøl 10 javascript security csrf csrf-protection aurelia

在Aurelia中,似乎还没有任何对CSRF保护的支持,而AngularJS的XSRF-TOKEN头部是由AngularJS框架自动设置的所有XHR请求.

我应该如何保护Aurelia应用程序免受CSRF攻击?我应该根据OWASP CSRF预防备忘单推出自己的支持,还是已经为Aurelia提供了其他选择?

jed*_*ung 7

您应该能够通过使用Aurelia的HTTP拦截器轻松地自己完成此操作(请参阅文档中的示例).在每次请求之前,您都可以发送令牌.这可以用传统aurelia-http-client标准和新标准来完成aurelia-fetch-client.

您的代码可能如下所示:

export class MyRestAPI {
    static inject () { return [HttpClient]; } // This could easily be fetch-client

    constructor (http) {
        this.http = http.configure(x => {
            x.withBaseUrl(myBaseUrl);
            x.useStandardConfiguration();
            x.withInterceptor({
                request: function (request) {
                    request.headers.set('XSRF-TOKEN', myAwesomeToken);
                    return request;
                }
            });
        });
    }

    ...

}
Run Code Online (Sandbox Code Playgroud)

在每个请求中,您的令牌都将被发送.您必须在服务器端处理验证.您可以轻松设置代码,以便初始请求可以获取令牌,或者您可以将令牌作为身份验证有效负载的一部分传回,或者如果您希望甚至可以将令牌存储在浏览器的本地存储中并使用它办法.

您甚至可以更进一步实施JWT身份验证.如果您正在使用node.js,我有一篇小博客文章描述了我如何在Express中实现JWT.Github上有一个名为aurelia-auth的插件,用于处理JWT,还有一篇关于它在Aurelia博客上实现的博客文章.