(安全篇)PHP四大安全策

一、文件系统安全

php如果具有root权限,且在脚本中允许用户删除文件,那么用户提交数据,不进行过滤,就非常有可能删除系统文件

<!--?php // 从用户目录中删除指定的文件 
$username = $_POST['user_submitted_name']; 
$userfile = $_POST['user_submitted_filename']; 
$homedir = "/home/$username"; 
unlink ("$homedir/$userfile"); 
echo "The file has been deleted!"; ?-->

上面的代码,假设用户提交的$userfile值是 ../etc/,那么/etc目录就会被删除

防范文件系统攻击,策略如下

只给php有限的权限

用户提交上来的变量要监测和过滤,不能包含文件路径等特殊字符

尽量避免使用PHP操作文件(删除),如果有这方面的需求,那用户可删除文件也必须是系统生成的随机名称,不可被用户控制

二、数据库安全

数据库安全主要防范的是sql injection,即sql注入攻击,提升数据库安全的策略如下:

不用使用root帐号或者数据库所有者帐号连接数据库,连接数据库限定连接用户的ip

使用php的pdo扩展,有效防止sql注入,除了安全方面的优势,php的pdo扩展在性能方面有有很大优势

请参看 http://php.net/manual/en/pdo.prepared-statements.php

对一些敏感信息进行加密,常见的比如对密码进行加密

三、用户数据过滤

对用户数据过滤,可以防范XSS和CSRF攻击

使用白名单(用户输入是固定模式)的方式

比如用户名只能使用数字字母,那么可以使用函数ctype_alnum判断

对用户输入使用函数 htmlentities或者htmlspecialchars进行处理,输入url不允许传入非http协议

用户身份验证使用令牌 token(csrf)

http://htmlpurifier.org/  HTML Purifier 是开源的防范xss攻击的有效解决方案,

四、其他安全策略

线上环境关闭错误报告(error_reporting,dislay_erros,可在php.ini中配置error_log路径,记录错误信息,这样有助于发现可能的用户攻击)

Register Globals,弃用(移除)的特性,不要使用

魔术引号特性,不要开启,在PHP-5.4中已经被移除

尽量使用PHP的最新版本,最新版本修复了已知的很多安全漏洞和bug

代码中严格遵守上述策略,基本能保证代码不会有太多的安全漏洞,能防范常见攻击。

 

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/1382.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
重蔚的头像重蔚管理团队
上一篇 2016年10月17日 17:25
下一篇 2016年10月18日 22:23

相关推荐

  • PHP文件下载

    文件下载 如果下载的文件较多、文件大,通常就会使用百度云,如果下载的文件小、文件少的话,通常会使用php进行下载 通过php下载文件的原理: 先通过php读取下载的文件资源,读取到这些资源之后,再将其保存到文件…

    2018年9月18日
    0342
  • php数组随机位置中插入新元素(附代码)

    以下是php数组随机位置中插入新元素的代码 代码如下: //数组随机位置中插入元素 function inarr($arr,$str=''){ $key=array_rand($arr);//随机数组下标,插入位置 $arr2=array(); foreach($arr as $k=>$value){ …

    2018年3月13日
    0451
  • PHP入门指南:JSON扩展。

    PHP是一门广泛使用的编程语言,尤其在Web开发中,PHP占据着重要的地位。其中,JSON是一种常见的数据格式,它可以用于存储和传输数据。PHP中提供了JSON扩展,方便开发人员对JSON数据进行操作和处理。本文将介绍JSON…

    2023年5月22日
    03
  • php实现签到功能的方法实例分析(附代码)

    今天来学习下php实现签到功能的方法。代码我也分享给大家供大家参考,具体如下: 首先我在数据库里建了两张表,一个是用户的积分表,一个是签到状态表,分来用来记录用户的积分数和先到状态 在用户签到状态表中我们有…

    2018年3月10日
    0239
  • php+redis消息队列实现抢购功能

    实现功能: 1. 基于redis队列,防止高并发的超卖 2. 基于mysql的事务加排它锁,防止高并发的超卖 基于redis队列工作流程: 1. 管理员根据goods表中的库存,创建redis商品库存队列 2. 客户端访问秒杀API 3. web服务…

    2018年5月21日
    0286
  • php常用函数-(10)php字符串处理常用的函数

    addcslashes — 以 C 语言风格使用反斜线转义字符串中的字符 addslashes — 使用反斜线引用字符串 bin2hex — 将二进制数据转换成十六进制表示 chop — rtrim() 的别名 chr — 返回指定的字符 chunk_split — 将字符串分…

    2015年12月7日
    0266
  • PHP中的新手入门指南。

    PHP是一门热门的前端编程语言,它功能强大、易学易用,被广泛用于网站的开发和维护中。对于初学者来说,PHP入门需要一定的学习和掌握,下面就为大家提供一些PHP中的新手入门指南。一、学习基本概念在学习PHP之前,…

    2023年5月28日
    08
  • php字符串处理函数大全

    addcslashes — 为字符串里面的部分字符添加反斜线转义字符 addslashes — 用指定的方式对字符串里面的字符进行转义 bin2hex — 将二进制数据转换成十六进制表示 chop — rtrim() 的别名函数 chr — 返回一个字符的ASCII…

    2018年3月3日
    0288

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息