php安全

一、安全威胁

机密数据的泄漏
数据丢失和数据损坏
数据修改
拒绝服务 dos
软件错误
否认

二、web安全的应用
处理安全性问题的策略
识别所面临的威胁
了解与我们打交道的用户
代码的安全性
web服务器和php的安全性
数据库服务器的安全性
保护网络
计算机和操作系统的安全性
灾难计划

a.识别所面临的威胁
访问或修改敏感数据
数据丢失或破坏
拒绝服务
恶意代码注入

一、安全和加密

很多安全问题都是由于轻信了第三方提供的数据造成的。比如对于输入数据,在对其进行
验证之前都应该将其视为嫌疑数据。
如果是把嫌疑数据发送给用户浏览器,就可能导致跨站点脚本(XSS)问题。
如果把嫌疑数据用于SQL查询,那么有可能会造成SQL注射问题。

二、过滤
在使用第三方提供的数据,包括你的用户提供的数据时,首先检验其合法性非常重要。这个过
程叫过滤

加密的本质就是扰乱数据。


三、预防Session定置


方案:
只要用户的授权范围改变,如成功登录后,就通过session_regenerate_id()来重
新生成session标识符:
<?php
session_regenerate_id();
$_SESSION['logged_in']=true;
?>
四、过滤输入

你需要确保在使用所用输入数据之前先进行过滤。
方案:
初始化一个空数组用于保存过滤后的数据。在验证输入有效后,将输入保存到这
个数组中。

五、避免跨站点脚本

安全地消除跨站点脚本(XSS)对你的PHP应用程序的攻击。
方案:
通过htmlentities()对所有HTML输出进行转义,并保证指明正确的字符编码:
六、避免SQL注入

七、将密码置于站点文件外部

第一章 如何写一个安全的表单

  1.声明一个安全数组

  2.过滤和判断

  3.删除多余的键值

  4.更新

代码DEMO:   

  if(isset($_POST['dosubmit'])) {
    $info = array();
    $info = checkuserinfo($_POST['info']);

    if(isset($info['password']) && !empty($info['password']))
      {
    $this->op->edit_password($info['userid'], $info['password']);
     }
    $userid = $info['userid'];

    //删除多余键值
    $admin_fields = array('username', 'email', 'roleid','realname');
    foreach ($info as $k=>$value) {
    if (!in_array($k, $admin_fields)){
    unset($info[$k]);
    }
    }
    //更新
  $this->db->update($info,array('userid'=>$userid));

  showmessage(L('operation_success'),'','','edit');

}

 http://os.51cto.com/art/201204/328938.htm

posted @ 2012-06-25 22:25  为了这有限的生命  阅读(266)  评论(0编辑  收藏  举报