网站地图    收藏   

主页 > 后端 > php资料库 >

三种危险的PHP代码_自学php网

来源:自学PHP网    时间:2014-12-04 22:12 作者: 阅读:

[导读] PHP是一个很强的语言,被称之为web开发之王,可以很轻易的搭建出一个很强悍的web应用程序。但是,往往有很多地方被我们疏漏掉了,下面几种不安全的代码,你写过么? 不安全的全局...

PHP是一个很强的语言,被称之为web开发之王,可以很轻易的搭建出一个很强悍的web应用程序。但是,往往有很多地方被我们疏漏掉了,下面几种不安全的代码,你写过么?

  1. 不安全的全局变量,全局变量是个好东西,可以辅助我们做很多事情,$_SERVER中有很多有用的信息,我们可以直接拿过来用。不过如果你的代码里曾经出现过这样的代码:
    if($authined==1) echo 'useful infomation!';

    $authined是一个来处理授权的变量。然后你的php.ini中的register_globals是打开的。那么当你访问这样一个网址的时候:http://yoururl?authined=1,会出现什么情况呢?不管你之前的操作以后$authined的值是多少,他在浏览器的$_GET中设置了值1,所以该条件是成立的,那么将输出一些你本来需要$authined为1的时候才输出的信息。这样你的一些验证就白搭了。所以当应用完成以后,最好还是把register_globals关闭。

  2. 错误提示的双刃剑错误提示也是个好东西,在程序的开发阶段,我们可以根据他来得到我们的程序哪里错了,进而分析程序,来改进我们的程序。但是,当我们的程序已经发布了以后,这些错误提示再弹出来,就很难保证,他不被一些人利用。从错误信息中可以得到很多信息。比如服务器的操作系统,数据库类型版本,应用程序服务器类型等等一系列的信息。而这一些东西,对于安全都是不利的。所以,当程序发布以后,请关闭你的错误提示。并且将显示错误的地方设置为不显示。同时如果你用的PHP框架需要设置发布级别,请不要设置程debug级别。
  3. SQL注入攻击。很多人应该写过这样的注册的登录系统,而且自己认为这样的系统安全还不错。就是页面中有两个文本框,一个输入用户名一个用来输入密码。然后,验证语句是这么写的。

    $check = mysql_query("Select Username, Password, UserLevel FROM Users Where Username = '".$_POST['username']."' and Password = '".$_POST['password']."'");

  4. 这样的语句,正常输入当然没有问题,但是当我们在用户名文本框中输入如下的东西时候,or 1=1 # 时,组合出来的sql语句就会变成。

    "Select Username, Password, UserLevel FROM Users Where Username ='1' or 1=1 #' and Password='xxx'

  5. 这样的sql语句,#后边的会被认为是注释,而1=1是永远成立的,所以选择的条件永远为true,这样将选出所有的用户信息。当我们根据用户的个数判断用户名密码是否正确的时候,也就发生了不该发生的错误了。

以上几点错误信息,每一点如果犯了都是致命的,希望各位写过的没写过注意一下。否则,假如某一天起来,自己的网站被hack掉了就不好玩了。

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论