php安全代码小总结
一,漏洞篇
-----------------------------------------------
[1].Sql-Injection
留意:cookie及x-forward-for,宽字节,报错注射等
挖掘漏洞参考
变量
$_GET[""],$_POST[""],$_COOKIE[""], $SERVER[""]
数据库操作函数
mysql_query()
数字型注入防范:
1.is_numeric() ctype_digit() intval()
2.str_length()确定长度
字符型注入防范:
1.mysql_real_escape_string()
2.数据库查询语句前加@防爆错
3.str_length()确定长度
-----------------------------------------------
[2].Command-Execution
函数:
system(),passthru(),popen(),exec()
数据库操作函数:
exec,system,popen,passthru,proc_open,shell_exec
执行命令管道符 % | >
测试如0 | dir c:
|| 双竖线的作用,前面语句执行错误则执行后面语句
如xx"+||+whoami+||+echo
-----------------------------------------------
[3].File-Inclusion
函数:
include(),require(),include_once(),require_once()
远程文件包含漏洞要求
allow_url_fopen() allow_url_include() file_get_contents()
绕过:zlib://和ogg://
5.2.0之后版本
data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8+ //
@eval(file_get_contents('php://input')); //POST phpinfo();
配合%00截断,新版本自动转义\0
-----------------------------------------------
[4].CSRF
CSRF防范策略
1>验证http-referer字段
安全性低,易被伪造
2>在请求地址中添加token并验证
token可在用户登录后存放在session中,每次请求时将token从session中取出,去请求的token对比以防范CSRF
GET方式:http://url/?=token
如果一个网站接受请求地方比较多,则在每次页面加载时遍历整个dom树,在dom中每个a和form标签后加入token
但在动态页面加载后产生的html代码,则需要以硬编码的形式手工添加
这种方式安全性弱点在于,如在论坛等交互比较频繁的地方hacker可构造环境盗取token并进而构造csrf攻击
故手工关闭referer
3>在HTTP头中自定义属性并进行验证。通过XMLHttpRequest类。
通常用于Ajax方法对页面局部的异步刷新
但适应性一般,对已有的网站架构局限性较大
-----------------------------------------------
[5].XSS(Cross Site Script)
反射型与存储型
控制$_GET,$_POST,$_COOKIE 各种传入的变量
使用htmlspecialchars()函数进行基础过滤
结合CSRF实现自动化利用
-----------------------------------------------
[6].File_Upload
函数:move_uploaded_file()
变量:$_FILES
php文件上传利用form表单进行文件上传时必须为post使用multipart/form-data才能完整的传递文件数据
php利用$_FILES系统函数的相关参数与函数move_upload_file函数来实例把由$_FILES全局变量生成的临时文件移动到指定目录完成文件的上传
$_FILES['files']['name']客户端文件的原名称
$_FILES['files']['type']文件的MIME类型
$_FILES['files']['size']已上传文件的大小
$_FILES['files']['tmp_name']储存的临时文件名,一般为系统默认
$_FILES['files']['error']该文件上传到相关的错误代码
防范方式:
1>判断MIME TYPE文件类型如$_FILES['files']['type']=="image/jpeg",判断文件大小,如$_FILES['files']['size']<10000 && $_FILES['files']['size']>100
2>指定上传文件名,如依赖时间生成hash(time).jpg等方式
3>根据文件后缀名判断文件
如file_ext=substr($filename,$strrpos($filename,'.')+1);
注意是否可能有双扩展名,二次上传突破等逻辑问题
4>服务器尝试渲染文件等方式判断是否为图片
5>不依赖于客户端js脚本限制上传文件类型
6>白名单规则
apache服务器常见上传安全问题
1>配合.htaccess利用上传
AllOverride ALL 允许子规则覆盖父规则
.htaccess添加AddType Application/x-httpd-php .jpg
2>文件名解析漏洞
*.php.123
在.htaccess添加AddHandler php5-script .php,文件名中包含php扩展名可以php脚本执行,如x.php.jpg
.php3 .php4扩展名
二,配置篇
1>关注漏洞信息,及时更新版本
2>php.ini httpd.conf .htaccess文件配置
1)safe_mode相关配置
2)register_globals关闭
3)open_basedir配置,防范目录遍历
4)allow_url_fopen关闭
5)disable_functions配置
6)magic_quotes_gpc打开
7)error_reporting=E_ALL & ~E_NOTICE
8)display_errors=Off避免攻击者获取更多信息
9)expose_php=Off隐藏版本信息
3>最小化服务器其他账户权限
4>第三方安全加固软件安装
5>调用第三方安全防护文件,配置php.ini
include_path=".:/php/includes"
auto_pretend_file="anti-inj.php"
auto_appent_file=
本文由站河南北大青鸟校区整编而成,如需了解更多IT资讯类的文章、新闻、课程和学习技巧、就业案例、招生详情等问题,可以对在线咨询老师进行一对一问答!
- 上一篇:局域网ARP欺骗原理及危害
- 下一篇:如何对远程连接数量进行限制
推荐资讯
- 教不等于学,郑州北大青鸟翔天信... 2020-02-07
- 南阳计算机培训学校学费是多少?... 2012-10-13
- IT技术人员泛滥,在中国做it还有... 2013-03-22
- iPhone 5或许永远不会出现,下一... 2012-10-13
- 河南高中生毕业后一般上什么学校... 2017-05-18
热点资讯
- 电脑温度多少是正常的情况呢?... 2018-09-07
- 四个策略及简单的防护方法... 2018-09-07
- 对硬盘进行双分区有什么好处... 2018-09-07
- 文件加密的几个简单方法... 2018-09-07
- 计算机小技巧,80G硬盘巧变变成... 2018-09-07