• PHP 安全


    怎样的PHP代码才算优秀

    XSS漏洞用htmlspecialchars函数填补了,从而屏蔽了非法字符。

    <?php  
    if (isset($_GET['query']))  
    {  
       echo '<p>Search results for query: ',  
       htmlspecialchars($_GET['query'], ENT_QUOTES), '.</p>';  
    }  
    ?> 
    

    能写出这样代码的人应该是我想要录用的人了。

    • <?被替换成了<?php,这样更符合XML规范。
    • 在输出$_GET['query']的值之前先判断它是否为空。
    • echo命令中多余的括号被去掉了。
    • 字符串用单引号限定,从而节省了PHP从字符串中搜索可替换的变量的时间。
    • 用逗号代替句号,节省了echo的时间。
    • 将ENT_QUOTES标识传递给htmlspecialchars函数,从而保证单引号也会被转义。虽然这并是最主要的,但也算是一个良好习惯。

    PHP 强大的安全过滤函数

    $html_string = array("&", " ", "'", '"', "<", ">", "	", "
    ");
    
     $html_clear = array("&", " ", "'", """, "<", ">", "    ", "");
    
     //过滤字符串
    
    $str = str_replace($html_string, $html_clear, $str);
    

    php常用的安全过滤函数集锦 good

    mysql_real_escape_string()和addslashes()函数都是对数据中的 单引号、双引号进行转义!也就是防止sql注入!
     但是mysql_real_escape_string()考虑了字符集,更加的安全一些!

    get_magic_quotes_gpc()和get_magic_quotes_runtime()

    不同:
    a、两者的作用范围不同:
    magic_quotes_gpc主要作用于web客户端,简单的说主要是对$_GET、$_POST、$_COOKE中的数据进行过滤!
    magic_quotes_runtime主要是对文件中读取的数据或从数据库查询得到的数据进行过滤!
    b、设置时间不同:
    magic_quotes_gpc不可以在运行时进行设置[只能在重启服务器的时候读取该设置]
    magic_quotes_runtime可以在运行时设置!
     注意:所谓运行时设置,就是,我们可以通过ini_set()函数,在脚本中对php.ini文件中的配置进行设置!

    明白了get_magic_quotes_gpc()和get_magic_quotes_runtime()这两个函数的后,我们就应该明白了:当我们 检测到php.ini配置文件开启了magic_quotes_runtime 和 magic_quotes_gpc的话,就会自动的对指定范围内的数据进行转义!如果关闭的话,我们就需要使用 mysql_real_escape_string()

    <?php
        if(!get_magic_quotes_gpc()) {
            foreach($_GET as $key=> &$value) {
                $value = mysql_real_escape_string($value);
            }
        }
        if(!get_magic_quotes_runtime()) {
            $sourceDataRecord= file('./sourceData.txt');
            if($sourceDataRecord) {
                foreach($sourceDataRecord as $sourceKey => &$sourceValue) {
                    $sourceValue = mysql_real_escape_string($sourceValue);
                }
            }
        }
        $gpcData = implode("	", $_GET);
        $runtimeData = implode("	", $sourceDataRecord);
        echo $gpcData, $runtimeData;
    ?>
    

    get_magic_quotes_gpc

    取得 PHP 环境变数 magic_quotes_gpc 的值,属于 PHP 系统功能。

    if(!get_magic_quotes_gpc())
    {
        addslashes($prot);
    }
    

    PHP数据过滤函数 good

    php 自带过滤和转义函数

    htmlspecialchars :将与、单双引号、大于和小于号化成HTML格式

    htmlentities(): 所有字符都转成HTML格式

    addslashes 单双引号、反斜线及NULL加上反斜线转义

    stripslashes 去掉反斜线字符

    quotemeta 加入引用符号

    nl2br() 将换行字符转成<br>

    strip_tags 去掉HTML及PHP标记

    mysql_real_escape_string 转义SQL字符串中的特殊字符

     

    PHP函数补完:get_magic_quotes_gpc()

  • 相关阅读:
    利用WEBPART部件之间的数据连接功能,筛选知识库
    + 网页制作效果常用代码
    你或许还未听说过的一些ASP.NET 2.0要诀 [转]
    关闭Windows Server 2003关机事件跟踪程序
    Windows SharePoint Services 3.0 应用程序模板中文版(图解)
    零基础学Python不迷茫——基本学习路线及教程!
    小白安装Python环境详细步骤!
    Python入门第一课——Python的起源、发展与前景!
    7款公认比较出色的Python IDE,你值得拥有!
    Windows平台下gitbook的安装与使用
  • 原文地址:https://www.cnblogs.com/dqxu/p/4908535.html
Copyright © 2020-2023  润新知