`
lujar
  • 浏览: 512658 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

PHP+MySQL安全方案整理

阅读更多

 

看之前牢记一句老话:一切用户输入的都是不安全的。


1 不要依赖于服务器端的magic_quotes,虽然他们默认都是打开的(magic_quotes_gpc)

将下面两个关闭
ini_set("magic_quotes_runtime", 0);
ini_set("magic_quotes_sybase", 0);

   全部自己手工对所有变量添加magic_quotes,就是添加addslashes
   代码如下:
   function stripslashes_deep($value){
  $value = is_array($value) ?
     array_map('stripslashes_deep', $value) :
     stripslashes($value);
  return $value;
   }
   
  function strip_slashes(){
   // If already slashed, strip.
   //把原有的slash去掉,重新添加自己的magic_quotes
   if ( get_magic_quotes_gpc() ) {
     $_GET    = stripslashes_deep($_GET   );
     $_POST   = stripslashes_deep($_POST  );
     $_COOKIE = stripslashes_deep($_COOKIE);
     $_SERVER = stripslashes_deep($_SERVER);
     $_REQUEST = stripslashes_deep($_REQUEST);
   }
   $_GET    = add_magic_quotes($_GET   );
   $_POST   = add_magic_quotes($_POST  );
   $_COOKIE = add_magic_quotes($_COOKIE);
   $_SERVER = add_magic_quotes($_SERVER);
   $_REQUEST = add_magic_quotes($_REQUEST);
  }

  strip_slashes();

  
   显示的时候全部stripslashes还原,虽然这很麻烦,不过如果你有一个模板引擎,可以在变量赋值的时候,统一作这个事情,
   例如: function assign($var, $value = '') {
  if (is_array($var)) {
   foreach ($var as $k => $v) {
    $this->vars[$k] = stripslashes_deep($v);
   }
  } else {
   $this->vars[$var] = stripslashes_deep($value);
  }
 }


  这样可以避免' " \ 等符号,下面还会有说明

2 对于用户名这样的字段,输入时候,检查不允许有空格,而且必须是字母数字下划线或划线这四种,用正则检查

  还有诸如结点名,菜单名,角色名这些不需要用' " \的,一定要在录入之前就检查,或者用替换为空

3 所有ID为数字的变量,必须检查是否为数字,并将变量强制转换成数字
  如果ID是前面带0的或者字符型的,可用编码规则对其进行检查,例如全是数字的正则

4 对于php的mysql函数,由于天生一次只能执行一条语句,即;不会自动断。所以无法通过追加语句实现注入,只可能通过将语句插入到变量中来起作用注入,所以对于delete ,select,update都可能有破坏作用。
例如:delete from tbl_users where user_id = 'admin' 变成 delete from tbl_users where user_id = 'admin or user_id<>'0',即在输入栏为:admin or user_id<>'0
  所以对于变量参数:
  不该有空格的,空格要去掉
  该位数字的,一定要转换成数字
  有编码规则的,一定要检查编码规则
  有长度限制的一定要加入长度限制
  绝对不会有注入语句的,就筛查sql关键字
  将一些危险字符进行替换,例如用“代替",空格用%20代替,特殊字符转成html等等
  当然用addslashes还是有明显效果的,对于php来说,要想在变量中插入条件,必须通过'来完成,所以这一招可以彻底断了所有企图
 
5 apache,php,mysql不要以系统用户运行

6 连接mysql不要用root

7 系统的所有错误信息必须关闭或者屏蔽

8 屏蔽非主流浏览器的user-agent

9 记录所有的sql操作和用户ip,如果发现危险语句,可以立刻屏蔽该IP,例如3天
  如果是用户登录后,有危险sql注入的语句,直接删除该用户,同时屏蔽IP

10 对于验证码要可以采用使用中文,变换字符串样式,必须点击弹出等方法

11 如果还是不安全,就要像电子银行那样,用U盾和专用控件了

分享到:
评论

相关推荐

    PHP+MySQL安全方案整理.rar

    以下是对“PHP+MySQL安全方案整理.rar”内容的详细解读: 一、PHP安全实践 1. 输入验证:所有用户输入都应被视为不可信的。使用PHP的filter_var函数或正则表达式进行数据验证,以防止SQL注入、跨站脚本(XSS)攻击...

    php+mysql超市仓库管理系统

    PHP+MySQL超市仓库管理系统正是这样一款针对小型超市或零售店的库存管理解决方案。本文将深入探讨该系统的核心技术和实现原理。 一、PHP基础 PHP(Hypertext Preprocessor)是一种广泛使用的开源服务器端脚本语言,...

    PHP+MYSQL 极品网站目录源码

    总的来说,"PHP+MYSQL 极品网站目录源码"为开发者提供了一套完整的网站目录解决方案,结合了PHP的灵活性和MySQL的稳定性,是学习和实践Web开发的好材料。通过深入研究和定制,可以构建出满足特定需求的网站目录服务...

    基于PHP+mysql网页设计开题报告.docx

    ### 基于PHP+MySQL的网页设计关键技术与实践 #### 一、课题背景与意义 随着互联网技术的快速发展,网站已经成为企业和个人展示自身、提供服务的重要平台。在这个背景下,如何高效、便捷地构建功能丰富的网站成为了...

    CMS程序CSS吧原创程序(PHP+MYSQL)-css8.zip

    综上所述,【CMS程序CSS吧原创程序(PHP+MYSQL)-css8.zip】是一个完整的、可定制的网站解决方案,结合了强大的后端处理能力(PHP+MySQL)和美观的前端设计(CSS)。用户可以通过这个系统轻松地管理和更新网站内容,...

    [新闻文章]心空书网PHP+MySQL_bookfree.zip

    2. MySQL:MySQL是一个关系型数据库管理系统,因其高效、稳定和开源的特性,常被用作Web应用的数据存储解决方案。在这个项目中,MySQL可能用于存储书籍信息、用户数据、评论等。 3. 架构设计:构建这样的平台需要...

    PHP和MySQL Web开发第4版pdf以及源码

    第18章 使用PHP和MySQL实现安全事务 18.1 提供安全的事务处理 18.1.1 用户机器 18.1.2 Internet 18.1.3 我们的系统 18.2 使用加密套接字层(SSL) 18.3 屏蔽用户的输入 18.4 提供安全存储 18.5 存储信用卡...

    php之mysql优化

    MySQL优化是提升数据库性能的关键步骤,对于PHP应用来说尤其重要,因为PHP经常与MySQL数据库进行交互,处理大量的数据查询和存储。以下将详细介绍MySQL优化的各个方面,并结合提供的文件名进行推测,尽管没有实际...

    PHP和MySQL WEB开发(第4版)

    第18章 使用PHP和MySQL实现安全事务 18.1 提供安全的事务处理 18.1.1 用户机器 18.1.2 Internet 18.1.3 我们的系统 18.2 使用加密套接字层(SSL) 18.3 屏蔽用户的输入 18.4 提供安全存储 18.5 存储信用卡号码 18.6 ...

    基于PHP语言的MySQL文档生成工具

    总结起来,这个基于PHP的MySQL文档生成工具是一个高效且用户友好的解决方案,它能自动整理MySQL数据库的信息并生成HTML格式的文档,大大提高了数据库管理和团队协作的效率。其易用性和灵活性使其成为开发者和数据库...

    php+文本存储登录系统_warm4po_php+文本存储登录系统_

    总结来说,"php+文本存储登录系统"是一种适合学习和小型应用的解决方案,它演示了如何利用PHP处理文件I/O并实现基本的身份验证。然而,对于生产环境,尤其是涉及大量用户或需要复杂查询的情况,还是推荐使用真正的...

    PHP和MySQL Web开发第4版

    第18章 使用PHP和MySQL实现安全事务 18.1 提供安全的事务处理 18.1.1 用户机器 18.1.2 Internet 18.1.3 我们的系统 18.2 使用加密套接字层(SSL) 18.3 屏蔽用户的输入 18.4 提供安全存储 18.5 存储信用卡...

    PHP MYSQL 企业CRM管理系统 源码

    MySQL则是一种关系型数据库管理系统(RDBMS),在PHP开发中常作为后端数据存储解决方案。它以高性能、高可用性和稳定性著称,能够处理大量数据并提供高效的查询性能。在CRM系统中,MySQL用于存储客户信息、销售记录...

    网页设计--开题报告.pdf

    首先,课题来源于因特网的普及和网站需求的增长,特别是PHP作为一种易学且开源的Web开发技术,结合Apache服务器和MySQL数据库,形成AMP(Apache+MySQL+PHP)体系,被广泛应用于各类网站。PHP语言的特性使其在处理...

    [文件数据]PHP版MySQL数据库分卷备份工具_mysql_bakup_tool.zip

    使用此PHP版MySQL数据库分卷备份工具,用户可以定期执行自动备份,确保数据安全。通过设定合理的分卷大小,可以优化备份和恢复过程,提高效率。同时,备份文件的分布式存储还能提高容灾能力,防止因单个文件损坏而...

    整理的一些资料

    C#是微软推出的一种现代化、类型安全的面向对象编程语言,常用于Windows平台的应用开发。这四个标签暗示了资料可能包括这些技术的基础知识、进阶技巧、最佳实践以及可能的项目实例。 【压缩包子文件的文件名称】:...

    PHP代码审计资料整理

    PHP代码审计是软件开发过程中的一个重要...在“代码审计资料整理”中,你将找到关于以上各个方面的详细资料,包括实例、案例分析和解决方案,帮助你提升PHP代码审计的技能,确保开发出更安全、更可靠的PHP应用程序。

    思维导图, 安全领域PHP代码审计;二进制漏洞分析;企业安全防御;渗透测试

    系统得给大家整理了学习方法. Nmap PHP代码审计 powershell语法 python regrex python SQLMAP SQLMAP-2 SSRF vi vim2 W3af web安全 web前端知识框架 Web应用安全 XML安全汇总 XSS导图 安全思维导图 常见威胁 二进制...

    彩信平台建设方案整理.pdf

    系统运行环境为PHP + MySQL,但可根据SP现有的短信平台环境进行定制化开发,以适应不同需求。 总的来说,彩信平台的建设旨在提供一个高效、兼容且经济的多媒体信息服务解决方案,帮助SP更好地服务用户,同时降低...

Global site tag (gtag.js) - Google Analytics