Heim > php教程 > php手册 > php常用的安全过滤函数集锦,php函数集锦

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

WBOY
Freigeben: 2016-06-13 09:24:20
Original
779 Leute haben es durchsucht

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

虽然各种开发框架给我们提供了很好的安全的处理方式,但是,我们还是要注意一下安全问题的。
 原因简单:很多小的功能和项目是用不到框架的,我们需要自己解决安全问题!

①常用的安全函数有哪些:

复制代码 代码如下:


mysql_real_escape_string()
 addslashes()

②这些函数的作用:

mysql_real_escape_string()和addslashes()函数都是对数据中的 单引号、双引号进行转义!也就是防止sql注入!
 但是mysql_real_escape_string()考虑了字符集,更加的安全一些!
 经过查阅相关的资料,可以得出一个结论:当前的字符集是单字节的话,这两个函数作用相同,都可以起到转义过滤的作用,但是,有谁会只是用单字节呢?尤其是utf8越来越广泛的被使用到!

③函数的用法:

在了解mysql_real_escape_string()和addslashes()这两个函数的用法的时候,我们必须先了解另外两个函数的含义!

get_magic_quotes_gpc()和get_magic_quotes_runtime(),我们来比较一下两个函数的异同:

相同:
 
a、两者都是用来获取php.ini配置文件的配置情况的!当开启的时候返回1,关闭的时候返回0!

b、当开启的时候,都会对指定范围内的数据进行转义过滤!

不同:
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()[或者addslashes函数进行过滤]

④举例说明:

1、无论magic_quotes_gpc和magic_quotes_runctime开启还是关闭的情况下getdata.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("\t", $_GET);
    $runtimeData = implode("\t", $sourceDataRecord);
    echo $gpcData, $runtimeData;
?>

 在sourceData.txt中的内容如下:

复制代码 代码如下:


" It's anoterh sunday afternoon
 I'm trunning turnning.....turnning around "
 

我们请求getData.php时的url如下:

php.test.com/safe/getdata.php?name=maw'eibin&age=25
 
执行结果如下:

复制代码 代码如下:


maw\'eibin 25\" It\'s anoterh sunday afternoon\r\n I\'m trunning
 turnning.....turnning around \"

⑤参考资料:

http://www.bkjia.com/article/35868.htm

看到很多php的安全过滤函数,经常把一些字符给替换掉,那用户输入的信息改变了不是很不好?解

正像你所说的,安全过滤,为了安全而限制用户的行为是必须的,你想想这样的限制针对的是什么用户?是有意危害网站安全的用户。举几个例子:
把标题中的html标签过滤。因为标题一般都是纯文本,1.html标签会导致布局错乱2.会包含危险script 3.把引号等字符编码为html实体并不会影响其最终显示效果;
把正文中的<script>标签过滤掉。因为普通用户根本不会去执行script。所以我们一般有两种做法:1.把script去掉,2.用html实体字符编码标签,这样在显示文章既可以显示代码段又不会执行代码了;<br />过滤查询参数的单引号。这是为了防止sql注入,一般有三种方法来实现:1.给引号添加反斜线2.去掉引号3.用sql的prepare动态绑定参数;<br />总之,不要信任任何的用户输入,限制还是为了更多的普通用户更好的使用咱们的服务。<br /><br/>   <p class="header2"><span class="icon i-relatedanswer"><h3>PHP 过滤函数有什</script>

addslashes()
mysql_real_escape_string
用在插入数据库的时候的安全过滤上,一般就是转码
htmlspecialchars :html系列的也有一些函数,你这便提到的这个是期中之一,这个是将数据输出到浏览器或是终端的时候进行一次编码,防止输出的数据中含有恶意js代码或是其它代码而进行转码

strip_tags : 这个就是去除一些html标签,和php的一些标签,用在什么地方你就看着办了··想过滤这些标签的地方都可以用
 

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage