最近看HTTP安全类的内容,也在项目中用到
一 SSL网站证书申请
使用 Let's Encrypt 提供的证书,免费90天,可用如下脚本工具自动续签
https://github.com/certbot/certbot
https://github.com/Neilpang/acme.sh
二 nginx开启安全HTTP头
(1)X-Frame-Options 指定此网页是否允许被 iframe 嵌套
(2)X-Content-Type-Options 指定浏览器对未指定或错误指定 Content-Type 资源真正类型的猜测行为
(3)X-XSS-Protection 也可以用来防范 XSS攻击
(4)Strict-Transport-Security 通知浏览器强制转换HTTP为HTTPS访问
(5)Content-Security-Policy 用来指定页面可以加载哪些资源,主要目的是减少 XSS 的发生。
# config to don't allow the browser to render the page inside an frame or iframe
# and avoid clickjacking http://en.wikipedia.org/wiki/Clickjacking
# if you need to allow [i]frames, you can use SAMEORIGIN or even set an uri with ALLOW-FROM uri
# https://developer.mozilla.org/en-US/docs/HTTP/X-Frame-Options
add_header X-Frame-Options SAMEORIGIN;
# when serving user-supplied content, include a X-Content-Type-Options: nosniff header along with the Content-Type: header,
# to disable content-type sniffing on some browsers.
# https://www.owasp.org/index.php/List_of_useful_HTTP_headers
# currently suppoorted in IE > 8 http://blogs.msdn.com/b/ie/archive/2008/09/02/ie8-security-part-vi-beta-2-update.aspx
# http://msdn.microsoft.com/en-us/library/ie/gg622941(v=vs.85).aspx
# 'soon' on Firefox https://bugzilla.mozilla.org/show_bug.cgi?id=471020
add_header X-Content-Type-Options nosniff;
# This header enables the Cross-site scripting (XSS) filter built into most recent web browsers.
# It's usually enabled by default anyway, so the role of this header is to re-enable the filter for
# this particular website if it was disabled by the user.
# https://www.owasp.org/index.php/List_of_useful_HTTP_headers
add_header X-XSS-Protection "1; mode=block";
# config to enable HSTS(HTTP Strict Transport Security) https://developer.mozilla.org/en-US/docs/Security/HTTP_Strict_Transport_Security
# to avoid ssl stripping https://en.wikipedia.org/wiki/SSL_stripping#SSL_stripping
# also https://hstspreload.org/
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";
# with Content Security Policy (CSP) enabled(and a browser that supports it(http://caniuse.com/#feat=contentsecuritypolicy),
# you can tell the browser that it can only download content from the domains you explicitly allow
# http://www.html5rocks.com/en/tutorials/security/content-security-policy/
# https://www.owasp.org/index.php/Content_Security_Policy
# I need to change our application code so we can increase security by disabling 'unsafe-inline' 'unsafe-eval'
# directives for css and js(if you have inline css or js, you will need to keep it too).
# more: http://www.html5rocks.com/en/tutorials/security/content-security-policy/#inline-code-considered-harmful
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' [https://a.disquscdn.com;](https://a.disquscdn.com%3b/) img-src 'self' data: [https://www.google-analytics.com;](https://www.google-analytics.com%3b/) style-src 'self' 'unsafe-inline'; frame-src [https://disqus.com](https://disqus.com/)";
三 防御DDOS攻击
阿里云主机,默认5G的DDOS防护,多了就要买防护包了
https://common-buy.aliyun.com/?spm=5176.7922146.0.0.3d77208bCCFFME&commodityCode=ddosbgp#/buy 阿里云DDoS防护包