哪种最佳做法为Django应用程序添加安全标头?

时间:2018-08-01 13:51:22

标签: django security nginx

现在,这更适合添加security headers配置 在应用程序级别或Nginx级别,例如

    add_header X-Frame-Options "SAMEORIGIN";
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    add_header 'Referrer-Policy' 'origin';

或在Django设置

SECURE_BROWSER_XSS_FILTER=True
SECURE_CONTENT_TYPE_NOSNIFF=True
SECURE_HSTS_INCLUDE_SUBDOMAINS=True
SECURE_HSTS_SECONDS=36000
SECURE_SSL_REDIRECT=True

如果我在两个级别上将它们添加在一起,将会在将来造成任何冲突或任何问题吗? 确保提供安全中间件的任何框架,而不是专门针对django的框架

1 个答案:

答案 0 :(得分:1)

是的,这可能会在您的Web服务器中引起一些冲突,例如,您必须在响应标头中使用X-Frame-Options,我建议您不要这样做。仅在一个级别上处理您,使用Django可以做任何事情,然后用您的Web服务器做其余的事(例如,我知道例如Django无法处理Feature-Policy可以完全使用您的Web服务器来做到这一点,nonce哈希不是在Web服务器上很容易,您应该使用Django来完成!) 我不知道这有多少正确的方法,Django deployment checklist建议对您的Web服务器和

使用SSL重定向

您可以使用Django-CSP生成随机数哈希并配置CSP policy,也可以通过以下方式将Feature-Policy添加到Nginx配置中:

add_header Feature-Policy "accelerometer 'none'; camera 'none'; geolocation 'none'; gyroscope 'none'; magnetometer 'none'; microphone 'none'; payment 'none'; usb 'none'";

OWASP Secure Headers Project和我的git repohere is link of django secure header config上的最佳做法