虽然各种开发框架给我们提供了很好的安全的处理方式,但是,我们还是要注意一下安全问题的。
原因简单:很多小的功能和项目是用不到框架的,我们需要自己解决安全问题!
①常用的安全函数有哪些:
②这些函数的作用:
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脚本,都可以对数据进行安全转移,内容如下:
在sourceData.txt中的内容如下:
我们请求getData.php时的url如下:
php.test.com/safe/getdata.php?name=maw'eibin&age=25
执行结果如下:
⑤参考资料:
http://www.bkjia.com/article/35868.htm
正像你所说的,安全过滤,为了安全而限制用户的行为是必须的,你想想这样的限制针对的是什么用户?是有意危害网站安全的用户。举几个例子:
把标题中的html标签过滤。因为标题一般都是纯文本,1.html标签会导致布局错乱2.会包含危险script 3.把引号等字符编码为html实体并不会影响其最终显示效果;
把正文中的<script>标签过滤掉。因为普通用户根本不会去执行script。所以我们一般有两种做法:1.把script去掉,2.用html实体字符编码标签,这样在显示文章既可以显示代码段又不会执行代码了;<br />过滤查询参数的单引号。这是为了防止sql注入,一般有三种方法来实现:1.给引号添加反斜线2.去掉引号3.用sql的prepare动态绑定参数;<br />总之,不要信任任何的用户输入,限制还是为了更多的普通用户更好的使用咱们的服务。<br /><br/>
<div class="header2"><span class="icon i-relatedanswer"><h3>PHP 过滤函数有什<div class="best-replyer">
<p class="ft p1">addslashes()<br />mysql_real_escape_string <br />用在插入数据库的时候的安全过滤上,一般就是转码<br />htmlspecialchars :html系列的也有一些函数,你这便提到的这个是期中之一,这个是将数据输出到浏览器或是终端的时候进行一次编码,防止输出的数据中含有恶意js代码或是其它代码而进行转码<br /><br />strip_tags : 这个就是去除一些html标签,和php的一些标签,用在什么地方你就看着办了··想过滤这些标签的地方都可以用<br/>
</script>