php-安全设置,做好基础安全!

0x00 隐藏php版本

expose_php=off

0x01 禁用危险的php函数

disable_functions=popen,pentl_exec,passthru,exec,system,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,show_source,escapeshellcmd,escapeshellarg,curl_exec,curl_multi_exec,parse_ini_file,assert

至于eval函数,我们用suhosin把这些全部都加进eval的黑名单

0x02 防护命令注入攻击

是函数使用不严格造成的,可以禁用危险php函数,程序自然会报错。

0x03 防护SQL注入攻击

magic_quotes_gpc = On

一般程序漏洞导致,程序中参数未严格过滤,或采用php前端安装nginx的WAF产品来防护。

0x04 防护xss攻击

可以增加xss模块,或采用php前端安装nginx的WAF产品来防护。存在xss跨站漏洞,如果在其位置跨个木马、偷取cookies、密码进行csrf攻击,后果不堪设想。

0x05 防护会话劫持攻击

设置php的session路径,避免放在网站目录。对于session,需要条件及其苛刻,没有足够条件也是无法成功的!

0x06 关闭注册全局变量

在PHP中提交的变量,包括使用POST或者GET提交的变量,都将自动注册为全局变量,能够直接访问,这是对服务器非常不安全的,所以我们不能让它注册为全局变量,就把注册全局变量选项关闭:

register_globals = Off

当然,如果这样设置了,那么获取对应变量的时候就要采用合理方式,比如获取GET提交的变量var,那么就要用$_GET['var']来进行获取,这个php程序员要注意。

0x07 上传文件

注意服务器上传目录无执行权限,上传程序的文件后缀过滤。

0x08 远程包含、本地包含

常见攻击方法:

远程包含,直接包含远程的恶意代码获取控制权

防范:在php.ini关闭

allow_url_fopen = off

本地包含常见攻击方法有三种:

日志包含。

/proc/environ包含客户端user-agent。

图片包含。

以上三种方法都是先向其内容插入恶意代码,使其包含执行防范:open_basedir限制了目录,防止了1,2的攻击方法。至于第三种我们的图片在调用服务器,本地包含是无效的。

0x09 Php.ini包含补丁文件

可以根据需要,通过它包含或者nginx的模块在php.ini中引用。在配置文件内引用的话,将影响到所以的网站,包含所有页面在php.ini中,找到此节:

; Automatically add files before or after any PHP document.

;auto_prepend_file = “phpids.php”

;auto_append_file = “alert.php”

默认是空,请添加所包含的文件。同时找到:

; UNIX: “/path1:/path2″

;include_path = “.:/php/includes”

;

; Windows: “\path1;\path2″

include_path = “.;F:\PHPnow\htdocs”

本文来自企鹅号 - 运维小菜媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏尚国

SELinux初学者指南

SELinux(Security Enhanced Linux)是美国国家安全局2000年发布的一种高级MAC(Mandatory Access Control...

19520
来自专栏Java3y

Linux进程管理

每个用户均可同时运行多个程序。为了区分每一个运行的程序,Linux给每个进程都做了标识,称为进程号(process ID),每个进程的进程号是唯一的。

42700
来自专栏kangvcar

手把手教你用1行Python代码实现FTP服务器 -- Pyftpdlib

21160
来自专栏北京马哥教育

Ansible实战之博客站点部署

糖豆贴心提醒,本文阅读时间4分钟 本篇文章记录通过部署一个博客站点来进行ansible实战的例子。 案例分为四个部分,第一部分是手动部署一个mezzanine...

38850
来自专栏LanceToBigData

MySQL集群(三)mysql-proxy搭建负载均衡与读写分离

前言 前面学习了主从复制和主主复制,接下来给大家分享一下怎么去使用mysql-proxy这个插件去配置MySQL集群中的负载均衡以及读写分离。 注意:这里比较坑...

46290
来自专栏LanceToBigData

MongoDB(一)环境搭建与初始配置

前言   最近的项目中需要用到MongoDB,所这段时间需要学习知道怎么去使用这个数据库。   这里我先简单的介绍一下什么是MongoDB,后面还会详细的介绍:...

51850
来自专栏鸿的学习笔记

日志采集技术笔记

使用Linux的rename机制保证文件写入要么成功,要么失败,绝对不能出现写了一半的情况。

43150
来自专栏程序员叨叨叨

一招搞定Windows无法安装到GPT分区形式磁盘疑难

今天给堂弟的电脑重装系统时,遇到了以往USB安装系统经常出现的问题,“Windows无法安装到这个磁盘。选中的磁盘采用GPT分区形式”。之前在CSDN的博客上有...

8320
来自专栏电光石火

vue开发环境搭建

首先,列出来我们需要的东西:  node.js环境(npm包管理器) vue-cli 脚手架构建工具 cnpm npm的淘宝镜像 vue的安装 1.vu...

39440
来自专栏PHP在线

Linux 软件的常用安装方法

对于操作系统而言,如果没有软件和一些任务算法 那么这个系统意义是不大的。而我们使用操作系统目的是为了让一些软件和任务能够运行在系统上,从而帮助我们提高工作的效率...

344100

扫码关注云+社区

领取腾讯云代金券