• 缺少HTTPOnly和Secure属性解决方案


    重新设置了WEB服务器之后,发现一些账号无法登陆

    服务器是用 apt 方式安装的 Apache2 + php-fpm

    1. 之前怀疑是 302 重定向到问题,但是 a2enmod/a2dismod rewrite 之后,均无法解决此问题。

    2. 用chrome登陆一个文件管理器,由于单个文件好调试,F12之后,

    3. F12之后,发现全是英文,经过一番摸索,终于设置到了 中文。

    4. 偶尔发现响应头中有个黄色的三角符号,吃惊之余看到 

    set-cookie:;HttpOnly;Secure

    这不就是 mod_headers模块的问题吗?可能是Apache2版本的问题,导致之前虚拟机中设置的header在当前版本中存在语法问题。

    到这里问题是找到了,先了解一下 Cookie安全相关属性

    HttpOnly :将HttpOnly 设置为true ,通过程序(JS脚本、Applet等)将无法读取到Cookie信息,防止程序获取cookie后进行攻击。

    Secure :设置了Secure (没有值),则只有当使用https协议连接时cookie才可以被页面访问,防止信息在传递的过程中被监听捕获后信息泄漏。

    打开虚拟机相关的配置文件,看到一行

    Header edit Set-Cookie ^(.*)$ ;HttpOnly;Secure

    看起来没问题,谷歌搜索之后,发现还是有语法问题,少了红色的 $1 ,可能是Apache设置引起的差异。

    Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure

    5. 给 Header edit Set-Cookie ^(.*)$ ;HttpOnly;Secure 增加了  $1 问题解决,

        程序的问题就是这个神奇,程序员为什么会猝死,为什么是吃青春饭的,由此可得到答案,实在比在放大镜下面看蚊子的牛牛还艰辛。

    远离IT,则人生幸福

    6. 这问题在PHP、nginx也可以处理。

        PHP

    php.ini 文件开启以下两行,默认大概位于 1390左右
    
    session.cookie_httponly=true
    session.cookie_secure =
    
    或者在 php 代码中使用 ini_set 函数设置
    
    @ini_set('session.cookie_httponly',   'On');
    @ini_set('session.cookie_secure',      'On');
    @ini_set('session.use_only_cookies', 'On');

        Nginx

    Nginx.conf 文件中设置 http{ } 或 server{ }
    add_header Set-Cookie "HttpOnly";
    add_header Set-Cookie "Secure";

    到此,问题已经基本处理完毕,在此做个记录,以裨益网友

  • 相关阅读:
    Maven安装与环境配置(Windows)
    Java配置----JDK开发环境搭建及环境变量配置
    js中的join(),reverse()与 split()函数用法解析
    Vue2.0 搭建Vue脚手架(vue-cli)
    vue: WebStorm设置快速编译运行
    优秀博客推荐
    Springboot读取自定义配置文件节点
    vue——报错:Cannot read property '__ob__' of undefined
    css——内容溢出显示垂直滚动条,内容不超出就不显示滚动条
    js——实现多选
  • 原文地址:https://www.cnblogs.com/yisuo/p/15844447.html
Copyright © 2020-2023  润新知