首页 > php > phpcms > > 正文

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

点击:

这里主要介绍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响应头