美文网首页
Nginx安全策略配置

Nginx安全策略配置

作者: 一只浩子 | 来源:发表于2024-06-29 16:50 被阅读0次
    防点击劫持

    点击劫持(Clickjacking)攻击,又称为界面伪装攻击,是一种利用视觉欺骗手段进行攻击的方式。攻击者通过技术手段欺骗用户点击本没有打算点击的位置,当用户在被攻击者攻击的页面上进行操作时,实际点击结果被劫持,从而被攻击者利用。这种攻击方式利用了用户对网站的信任,通过覆盖层(通常是透明的iframe)覆盖在另一个网页之上,使受害者无法察觉。
    解决方案:

    1. CSP(Content Security Policy,即内容安全策略)
      不允许被嵌入,包括frame、iframe、object、embed、applet
      add_header Content-Security-Policy "frame-ancestors 'none'";
      只允许被同源的页面嵌入
      add_header Content-Security-Policy "frame-ancestors 'self'";
    2. X-Frame-Options
      不允许被嵌入,包括frame、iframe、object、embed、applet
      add_header X-Frame-Options "DENY";
      只允许被同源的页面嵌入
      add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Frame-Options "SAMEORIGIN";
    
    防止跨站脚本 XSS 攻击防护——X-XSS-Protection
    add_header X-XSS-Protection "1; mode=block";
    

    0:关闭浏览器的XSS防护机制;
    1:启用浏览器的XSS保护;
    1; mode=block; 启用XSS保护,如果检测到恶意代码,停止渲染恶意代码;

    防止XSS攻击,cookie安全传输,js脚本无法读取到cookie信息
    add_header Set-Cookie "name=value; HttpOnly; Secure";
    
    1. secure属性:当设置为true时,表示创建的Cookie会被以安全的形式向服务器传输,浏览器仅仅会在HTTPS请求中向服务端发送cookie内容,如果是 HTTP 连接则不会发送cookie内容,所以不会被窃取到Cookie的具体内容。
      基于安全的考虑,在WEB应用中,对于敏感业务,如:登录或者付款,需要使用HTTPS来保证内容的传输安全,而在用户成功获得授权之后,获得的客户端身份cookie如果没有设置为Secure,那么很有可能会被非HTTPS页面拿到,从而造成重要的身份泄露。
    2. HttpOnly属性: 如果在Cookie中设置了"HttpOnly"属性,那么通过程序(JS脚本、Applet等)将无法读取到Cookie信息,这样能有效的防止XSS攻击。
    防止浏览器在解析响应内容类型时执行MIME类型嗅探
    add_header X-Content-Options "nosniff" always;
    add_header X-Content-Type-Options "nosniff" always;
    

    X-Content-Type-Options头信息是一种安全策略,用于防止浏览器在解析响应内容类型时执行MIME类型嗅探。MIME类型嗅探是一种浏览器行为,它会在某些情况下忽略服务器返回的Content-Type头信息,而是根据文件内容推断出MIME类型。这种行为可能会导致安全问题,例如在解析HTML页面时执行脚本或渲染嵌入式内容。

    将X-Content-Type-Options的值设置为"nosniff"可以禁用浏览器的MIME类型嗅探功能,强制浏览器遵循服务器返回的Content-Type头信息。这可以提高Web应用程序的安全性,防止恶意站点通过MIME类型嗅探获取用户的敏感信息。

    防止中间人攻击和各种网络嗅探攻击,浏览器强制HTTPS连接

    Strict-Transport-Security(HSTS)是一个HTTP响应头,主要用于提高网站的安全性。它强制浏览器使用HTTPS协议来访问网站,从而防止中间人攻击(Man-in-the-Middle Attack)和各种网络嗅探攻击。在Web开发中,HSTS可以帮助确保用户数据的安全性,减少恶意攻击的风险。

    中间人攻击是一种常见的网络攻击方式,攻击者通过在用户和服务器之间插入一个中间代理服务器,来窃取或篡改用户和服务器之间的通信数据。使用HTTPS协议可以加密浏览器和服务器之间的通信,使得攻击者无法窃取或篡改数据。然而,在某些情况下,用户可能会在浏览器中手动输入HTTP地址,这就会导致中间人攻击的风险。HSTS通过强制浏览器使用HTTPS协议来访问网站,避免了这种情况的发生。

    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
    

    max-age:表示HSTS策略的有效期,单位为秒。这里将有效期设置为31536000秒(一年);
    includeSubDomains:强制所有子域都使用HTTPS协议;
    preload:表示网站希望被预加载到浏览器的HSTS列表中,以确保浏览器始终使用HTTPS连接。

    跨源资源共享(CORS)什么事跨资源共享?
    1. 如果返回头是以下情况,那么就是高危漏洞,这种情况下漏洞最好利用:
      Access-Control-Allow-Origin: https://www.attacker.com
      Access-Control-Allow-Credentials: true
    2. 如果返回头是以下情况,那么也可以认为是高危漏洞,只是利用起来麻烦一些:
      Access-Control-Allow-Origin: null
      Access-Control-Allow-Credentials: true
    3. 如果返回以下,则不存在漏洞,因为N必须是小写才存在漏洞:
      Access-Control-Allow-Origin: Null
      Access-Control-Allow-Credentials: true
    4. 如果返回以下,可认为不存在漏洞,因为CORS安全机制阻止了这种情况下的漏洞利用,也可以写上低危的CORS配置错误问题
      Access-Control-Allow-Origin:*
      Access-Control-Allow-Credentials:true
    # 允许跨域请求的域
    add_header 'Access-Control-Allow-Origin' '*';
    # 允许跨域请求携带凭据
    add_header 'Access-Control-Allow-Credentials' 'true';
    
    防止X-Forwarded-For头伪造漏洞及防范 参考资料链接

    漏洞描述:X-Forwarded-For 作为 HTTP 请求的扩展头,在请求的过程中可以被直接的进行修改。正常情况下,我们所获得的IP是客户端IP,但是如果客户端对 X-Forwarded-For 进行了修改,那么客户端IP将会是被伪造过的。
    场景:发送短信验证码接口(ip+类名+方法名+参数限流),绿灯权限。攻击者通过修改http header头X-Forwarded-For绕过验证码限制检测验证,导致同一个手机号可以在短时间内发送多次验证码。

     location /api/ {
          proxy_pass http://172.16.1.201:9088/;
          include /...../nginx/proxy-params.conf;
          .....
          proxy_set_header X-Real-IP $remote_addr; 
          # 防止X-Forwarded-For头伪造
          proxy_set_header X-Forwarded-For $remote_addr;
     }
    
    nginx安全策略配置
    #允许跨域请求的域
    add_header 'Access-Control-Allow-Origin' '*';
    #允许跨域请求携带凭据
    add_header 'Access-Control-Allow-Credentials' 'true';
    #防点击劫持
    add_header X-Frame-Options "SAMEORIGIN";
    #防止跨站脚本 XSS 攻击防护——X-XSS-Protection
    add_header X-XSS-Protection "1; mode=block";
    #防止浏览器在解析响应内容类型时执行MIME类型嗅探
    add_header X-Content-Options "nosniff" always;
    add_header X-Content-Type-Options "nosniff" always;
    #防止中间人攻击和各种网络嗅探攻击,浏览器强制HTTPS连接
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
    #防止XSS攻击,cookie安全传输,js脚本无法读取到cookie信息
    add_header Set-Cookie "name=value; HttpOnly; Secure";
    

    相关文章

      网友评论

          本文标题:Nginx安全策略配置

          本文链接:https://www.haomeiwen.com/subject/fqyscjtx.html