课程咨询 :025-86971863

南京PHP培训 > 达内新闻 > php web网站开发安全
  • php web网站开发安全

    发布:南京PHP培训      来源:达内新闻    

  • php是一门上手很容易,比较随性的计算机编程语言,刚上班的时候对php安全方面懂得不是很多,曾写过一些程序:前台提交的数据没有经过转义(<和>之类的html标签没有转成html实体),测试过程中后显示用户输入的内容成了html的标签格式,很是丢人啊,丢人是小事,重要的是程序的安全性没有保证。
        以前看过一道很简单的面试题,大概意思是从:http://www.phpstar.cn/?category=php中获取获取参数category的值。题目很简单相信写过php的人都能把category的值得出来,比如$_GET['category']这样写的人比比皆是,这样写不能说不能取到值,只是没有经过安全性的处理。
        下面说一说php的安全的例子:
        1.include的使用。
    1 <?php 
    2  
    3     include $action . '.php'; 
    4  
    5 ?>
       其中的$action变量可能是从外边get方式的来的,这样看貌似是没有问题,但是如果$action = ‘http://www.baidu.com/error’呢?所以这里要加一个判断:要引入的文件是不是存在
     
    1 <?php 
    2     if (file_exists($action . '.php')) { 
    3         include $action . '.php'; 
    4     } 
    5 ?>
     
         2.跨站运行脚本xss:比如一个评论框中用户输入
     
    1 <script type="text/javascript"> 
    2     alert('IT博客!'); 
    3 </script>
     
         如果程序没有做什么处理直接显示的话,想想会有什么事情发生?一个弹窗就显示在用户的眼前“IT博客!”。
        3.SQL注入
    1 <?php 
    2     $sql = "SELECT * FROM user WHERE
    3      username = '{$username}' AND passw = '{$passw}'"; 
    4     $result = mysql_query($sql); 
    5 ?>
     
         假如说$username获取过来的值是:admin ‘ or ’1 = 1,$passw 亦是如此:passw ‘ or ’1 = 1,以上的sql会变成
     
    1 <?php 
    2     $sql = "SELECT * FROM user WHERE
    3  username = 'admin' or '1 = 1' AND passw = 'passw' or '1 = 1' "; 
    4     $result = mysql_query($sql); 
    5 ?>
     
         减少这样的不安全编程的方法很简单:对从用户端传过来的数据进行处理数字用intval,字符串用htmlspecialhtmlspecialchars
    推荐文章

上一篇:解析PHP+MYSQL注入的发生

下一篇:PHP的漏洞以及如何防止PHP漏洞?

最新开班日期  |  更多

PHP高级开发工程师就业班

PHP高级开发工程师就业班

开班日期:04-28

PHP高级开发工程师精品班

PHP高级开发工程师精品班

开班日期:04-28

PHP高级开发工程师周末班

PHP高级开发工程师周末班

开班日期:04-28

PHP高级开发工程师定制班

PHP高级开发工程师定制班

开班日期:04-28

  • 地址:南京市秦淮区太平南路333号金陵御景园8楼达内
  • 课程培训电话:025-86971863     全国服务监督电话:400-111-8989
  • 服务邮箱 tousu@tedu.cn
  • 2001-2016 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56