• home > php > phpcms >

    web安全nginx需设置HTTP header参数及phpcms设置CSP的缘由及注意事

    Author:zhoulujun Date:

    这里主要介绍CSP已经里面js设置。phpcms安全措施加强篇,这篇介绍CSP对phpcms系统的影响,比如移除eval,涉及哪些内容

    X-Frame-Options:主要还是为了防止click hack,参看《再谈Hijacking——JavaScript ClickJacking原理浅析》。因为phpcms的登录、评论及后台管理都是frame内嵌的。所以,这里设置为sameorgin(同源),公司项目的话最好设置为deny

     add_header  X-Frame-Options  SAMEORIGIN;

    X-Content-Type-Options:提示客户端一定要遵循在 Content-Type 首部中对  MIME 类型 的设定,而不能对其进行修改。这就禁用了客户端的 MIME 类型嗅探行为

     add_header X-Content-Type-Options nosniff;

    Strict-Transport-Security:这个网站禁止使用HTTP方式加载。最先开始的时候,我觉得这个是然并卵,后台直接强制把http跳转到https即可。但是,按照官方的意识,这个让浏览器强制使用https连接(防止中间人攻击),看来看去,还是觉得鸡肋,然后中间http劫持了,都没有到你的服务器(浏览器都没有收到你的返回值)有啥用?

    X-XSS-Protection:浏览器xss保护开关。浏览器默认就是禁了xss,或许测试的时候可以用到——关闭xss保护机制。对于ie,推荐阅读《利用IE8/9浏览器XSS跨站攻击脚本筛选过滤特性(X-XSS-Protection)》。关于要不要开启,推荐阅读《The misunderstood X-XSS-Protection

    add_header X-Xss-Protection 1;

    Content-Security-Policy:如果对CSP不明觉厉的,请先读《前端安全配置xss预防针Content-Security-Policy(csp)配置详解

     add_header  Content-Security-Policy  "default-src 'self'; script-src 'self' 'unsafe-inline' cache.zhoulujun.cn *.baidu.com; img-src 'self' ; style-src 'self' 'unsafe-inline' cache.zhoulujun.cn; frame-src 'seff' *.baidu.com;

        

    之前写了很多关于CSP的文章,只是在公司的项目中使用。但是自己的网站CSP策略却没有设置。然后发现,由于老旧的phpcms系统现在已经停摆不升级了(但是从2008年起一直用这个后台管理系统),里面还是有蛮多安全问题的。今天先把eval干掉先!

    1. JavaScript中的eval()不安全,可能会被利用做XSS攻击(跨站脚本攻击(Cross Site Scripting)),eval也存在一个安全问题,因为它可以执行传给它的任何字符串,所以永远不要传入字符串或者来历不明和不受信任源的参数。

    2. eval会运行编译器,影响性能。

    eval是evil,但是 settimeout, setinterval,new Function 等实际间接调用了eval函数

    而该死的phpcms中使用大量的eval函数。比如处理JSON串

    phpcms/modules/video/templates/video_list.tpl.php  87行

    data =  eval('(' + data + ')');


    下面是phpcms使用eval的地方,不使用phpcms的可以跳过。

    phpcms/modules/admin/templates/role_priv.tpl.php  12行

    对应的界面为  设置-》角色管理-》权限管理 

    此处eval改为parseInt


    phpcms/modules/block/templates/block_update.tpl.php

    对于为碎片管理,这里因为一般是禁止的,所以没有过多研究,直接改为

    eval("var d = "+obj+";");


    2.jpg

    这为广告位,这个模块不需要,大多采用广告联盟或者定制的广告。所以懒得改


    phpcms/modules/video/templates/video_list.tpl.php

    此模块为视频模块,eval的作用相当于 JSON.parse。这里我没有改。需要改的自便。

    余下的也是如此

    3.jpg

    至于nginx的

    $uri导致的CRLF注入漏洞、目录穿越漏洞、Http Header被覆盖的问题

    推荐阅读:《三个案例看Nginx配置安全

    以及nginx 防止sql

    其实nginx不具备防止sql注入的功能,但是nginx可以过滤url

    推荐阅读:《nginx服务器防sql注入与溢出

    其它的,后续在整理……

    最近发现,很多文章,都没有空写完……

    哎……,其它娃快点长大

    参考文章:

    一些安全相关的HTTP响应头



    转载本站文章《web安全nginx需设置HTTP header参数及phpcms设置CSP的缘由及注意事》,
    请注明出处:https://www.zhoulujun.cn/html/php/phpcms/2018_0719_8130.html