当前位置:主页 ->PHP教程 - PHP 安全 - 跨站攻击 - ->php web网站开发安全
文章详细内容

php web网站开发安全

摘要: php是一门上手很容易,比较随性的计算机编程语言,刚上班的时候对php安全方面懂得不是很多,曾写过一些程序:前台提交的数据没有经过转义...
转载请注明来源:php web网站开发安全
 php是一门上手很容易,比较随性的计算机编程语言,刚上班的时候对php安全方面懂得不是很多,曾写过一些程序:前台提交的数据没有经过转义(<和>之类的html标签没有转成html实体),测试过程中后显示用户输入的内容成了html的标签格式,很是丢人啊,丢人是小事,重要的是程序的安全性没有保证。

    以前看过一道很简单的面试题,大概意思是从:http://www.phpstar.cn/?category=php中获取获取参数category的值。题目很简单相信写过php的人都能把category的值得出来,比如$_GET['category']这样写的人比比皆是,这样写不能说不能取到值,只是没有经过安全性的处理。

    下面说一说php的安全的例子:

    1.include的使用。

 

 

  • <?php  



  •     include $action . '.php';  



  • ?> 



  •    其中的$action变量可能是从外边get方式的来的,这样看貌似是没有问题,但是如果$action = ‘http://www.baidu.com/error’呢?所以这里要加一个判断:要引入的文件是不是存在


    <?php  
        if (file_exists($action . '.php')) {  
            include $action . '.php';  
        }  
    ?>  


         2.跨站运行脚本xss:比如一个评论框中用户输入


    <script type="text/javascript">  
        alert('IT博客!');  
    </script>  


         如果程序没有做什么处理直接显示的话,想想会有什么事情发生?一个弹窗就显示在用户的眼前“IT博客!”。

        3.SQL注入


    <?php  
        $sql = "SELECT * FROM user WHERE 
         username = '{$username}' AND passw = '{$passw}'";  
        $result = mysql_query($sql);  
    ?>  


         假如说$username获取过来的值是:admin ‘ or ’1 = 1,$passw 亦是如此:passw ‘ or ’1 = 1,以上的sql会变成


    <?php  
        $sql = "SELECT * FROM user WHERE
     username = 'admin' or '1 = 1' AND passw = 'passw' or '1 = 1' ";  
        $result = mysql_query($sql);  
    ?> 


         减少这样的不安全编程的方法很简单:对从用户端传过来的数据进行处理数字用intval,字符串用htmlspecialhtmlspecialchars

     

     

     

    转载请注明来源:php web网站开发安全
    http://www.php1.cn/Content/phpweb_WangZhanKaiFaAnQuan.html
    关注 第一PHP社区 微信公众号,获取更多最新PHP技术分享

    • 打酱油

    • 震惊

    • 呵呵


    • 鄙视
    最新评论
    • 不吐不快,赶紧来一发!
    关注 第一PHP社区 微信公众号
    PHP1.CN | 中国最专业的PHP中文社区 | PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | PHP论坛
    Copyright © 1998 - 2015 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有
    快云为本站提供专业云计算服务