PHP Web 安全

本文深入探讨了安全编程的最佳实践,包括表单测试、系统调用、缓冲区溢出、密码强度、会话安全、保护MySQL、PHP配置、Fuzz测试等关键领域的策略与方法。同时,详细介绍了如何通过合理配置和应用安全技术,如Apache配置、目录遍历预防、文件打开限制等,确保网站的安全性。
摘要由CSDN通过智能技术生成

1.表单测试:

空白字符,控制字符,非字母数据(如符号&,*等),超长输入(大于256个字符),留言版垃圾,二进制数据,其他编码数据(如ASICII,UTF-8,十六进制,八进制等),SQL诸如,XSS

处理:设定长度规则(合法用户不会写小说),若能发邮件的地方只能一次一个发一人,错误处理进行重定向或错误提示,

2.系统调用:exec(),sysetem(),backtick。

1.部署的正式环境去掉sudo命令(禁止该命令)

2.使用escapeshellcmd(),escapeshellarg()进行转义保护系统调用,

3.使用固定方式调用系统命令,封装api,如将exec()来移动文件封装为只接受文件名的函数调用,避免直接调用,让api功能单一,exec()带太多额外不方便检测,如只接受文件名的函数则更容易检测变量是否满足条件

4.验证用户的输入

3.缓冲区溢出:

当载入程序后,程序会被保存在内存中,内存其他部分也就是缓冲区,将被用来保存程序数据(作为全局变量保存)、任何程序设计的函数库以及两个数据结构(堆栈和堆),堆栈是从下往上填充,若参数大于参数的缓冲区所准备的空间,它将覆盖下一个可用的内存地址,返回地址缓冲区,于是返回结果可能为一段恶意结构,

4.密码强度:

1.避免任何语言的字典单词

2.使用大小写字母或其他字符组合

3.密码长度大于6-8位,可以更多

4.创建密码提示符代替答案,如一句话的首写字母

5.定期修改密码

6.是否以加密的方式存储密码

7.保存密码的数据库是否安全

7.若账户可以发送邮件,是否实现了验证码来过滤避免自动脚本创建账户

5.会话安全:会话固化,会话劫持,会话毒化(注入)

6.xss跨站攻击(htmlspecialchars, strip_tags),sql注入(mysql_real_escape_string, addslashes),csrf,挂马,危险脚本(如phpinfo这种暴露版本信息),远程文件包含allow_url_include=Off,管理后台泄露(单一入口在目录,其他php不再web目录),身份权限验证

7.apache配置:

php.ini中disable_functions可以禁用php函数(如disable_functions = phpinfo,gzcompress,apache_note,apache_setenv,proc_get_status,exec,passthru,proc_nice,proc_open,proc_terminate,shell_exec,system,popen,ini_restore,syslog,define_syslog_variables,symlink,link,error_log,leak,dbmopen,openlog,closelog,popen,pclose,stream_socket_server)

1.隐藏版本信息和http头信息:ServerSignature Off,ServerTokens Prod,隐藏php错误(php.ini expose_php = On)

2.目录遍历

3.将apache限制在自身目录结构中,http.conf设置<Directory 目录> Order….Deny……..</Directory>,在非web目录不能打开php脚本,比如上传目录不能运行

4.关闭多于的配置和模块

5.使用ModSecurity包过滤工具(有利有弊,如增加了开销,还会将空格,点号,左方括号转换为下划线等)

额外补充:

Path Traversal(目录遍历)

漏洞描述

目录遍历指的是应用程序对文件路径没有检查导致服务器上的敏感文件/代码泄漏。

安全隐患

可能会导致源代码等敏感信息泄露。

修复建议

严格检查文件路径参数,限制在指定的范围。严格限制文件路径参数,不允许用户控制文件路径相关的参数,限定文件路径范围。

在php.ini中进行如下配置:

open_basedir = 服务器上WEB目录的路径(注,路径最后需要加上斜杠作为结束),如:open_basedir = /var/www/html/

Directory Indexing(目录泄露)

漏洞描述

应用服务器配置不当,导致应用服务器的目录列表被展示。

安全隐患

可能会导致敏感信息或源代码泄露。

修复建议

配置应用服务器禁止目录列表展示。、

apache修改方法:
<Directory “E:/www”>下面的
Options Indexes FollowSymLinks
改成
Options  FollowSymLinks
然后

<Directory />
    Options Indexes FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

改成

<Directory />
    Options  FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

8.保护MySQL:

1.单机的话则关闭远程访问或则只能固定ip访问

2.修改管理员root用户名且增加密码不为空

3.为一个应用开启单独的账户和密码设置最小化的权限,如不能删除数据表等

4.删除多于的MySQL账户和数据库(如test)

9.php配置php.ini:

1.safe_mod,safe_mod_gid开关

2.open_basedir,safe_mode_exec_dir

3.expose_php,register_globals,session_cookie_lifetime

4.diplay_errors

5.远程文件打开等

10.Fuzz测试:PowerFuzzer,测试工具集:CAL9000

参考和建议阅读:
《PHP应用程序安全编程》
淘宝第三方应用安全规范
制作安全网站的checklist
PHP漏洞全解
浅谈php web安全
php.ini安全配置
写给系统管理员的 25 个 PHP 安全实践

YIXUNCMS企业网站建设系统SD中英双语版简介 YIXUNCMS网站建设系统是由易迅软件工作室专为中小型企业开发的一套展示类网站系统,采用目前流行的PHP语言并搭配性能稳定的MYSQL数据库。 “YIXUNCMS网站建站系统2.0.4.9SD中英双语版”是“2.0.4.9SD简体中文版”的姊妹版本,是为了迎合企业对于多语言网站版本的需求而发布的,“2.0.4.9中英双语版”使用了中英数据单条并存的设计方法,以简化管理员在数据录入、修改等操作上的工作量,在中英共用数据方面做了优化调整,同时继承了“2.0.4.9SD简体中文版”的所有功能与特点。 YIXUNCMS网站建设系统“三无”承诺:无后门、无限制、无一行废代码,用户可终身免费使用。 YIXUNCMS企业网站建设系统SD中英双语版系统特点: 1.采用目前流行的PHP语言编写,底层采用超轻量级框架作为系统支撑; 2.页面布局使用DIV CSS技术,遵循WEB标准,及大提高页面的浏览速度; 3.使用应用广泛的SMARTY模板引擎,页面高速缓存,提高网站运行速度,降低大访问量对服务器造成的压力; 4.采用MVC开发模式,可搭配多套不同风格模板,使网站改版更加轻松; 5.PHP5完全的OOP设计思想,支持无限分类; 6.前台交互采用AJAX无刷新技术,交互体验更友好; 7.操作页面友好提示,随时了解自己的操作动态; 8.安装布署及为简单,瞬间搭建好属于您的企业网站; 1.运行环境:Apache PHP MySql PhpMyadmin,本机测试建议安装集成环境; 2.前端架构:HTML CSS DIV JQUERY; 3.程序架构:PHP Mysql; 4.默认后台地址:http://您的网址/admin.php 注意事项 1、共享版软件只适合试用、本地测试及学习交流使用,不得用于商业用途,如需建立商业站点进行外网投放,请使用购买商业版; 2、您可以在遵守本协议规定和约束的基础上,对软件进行程序修改、页面美化,以适合您网站的需求。 3、您拥有使用本软件构建的网站中收集到的全部会员资料、文章、下载、图片、留言及相关信息的所有权,并独立承担与内容相关的法律义务。 4、未经易迅书面许可,您不得对本软件进行二次开发发展任何派生版本、修改版本用于重新分发; 5、未商业授权之前,不得将本软件用于商业用途及域名挂靠使用; 6、不得对本软件或与之关联的商业授权进行出租、出售、抵押或发放子授权号; 7、易迅工作室不保证您所下载系统功能的完整性,如需使用完整的功能请您选择授权版 YIXUNCMS企业网站建设系统SD中英双语版前台页面 YIXUNCMS企业网站建设系统SD中英双语版后台管理 后台路径:http://您的网址/admin.php 用户名与密码:admin 123456(安装时可设置) 后台页面: 相关阅读 同类推荐:站长常用源码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值