PHP网页编程之php自带的几个避免sql注入的函数
小试一下身手,大概是没问题了,那么交给你个任务,做个留言本吧,这和HELLO WORLD有一比啊!^_^,同是新手面临的第一道关。SQL注入进击是黑客进击网站最经常使用的手腕。假如你的站点没有利用严厉的用户输出查验,那末常轻易遭到SQL注入进击。SQL注入进击凡是经由过程给站点数据库提交不良的数据或查询语句来完成,极可能使数据库中的记载遭到表露,更改或被删除。
为了避免SQL注入进击,PHP自带一个功效可以对输出的字符串停止处置,可以在较底层对输出停止平安上的初步处置,也即Magic Quotes。(php.ini magic_quotes_gpc)。默许情形下开启,假如magic_quotes_gpc选项启用,那末输出的字符串中的单引号,双引号和其它一些字符前将会被主动加 上反斜杠。
但Magic Quotes并非一个很通用的处理计划,没能屏障一切有潜伏风险的字符,而且在很多办事器上Magic Quotes并没有被启用。所以,咱们还需求利用其它多种办法来避免SQL注入。
许 多半据库自己就供应这类输出数据处置功效。例如PHP的MySQL操作函数中有addslashes()、mysql_real_escape_string()、mysql_escape_string()等函数,可将特别字符和能够引发数据库操作失足的字 符本义。那末这三个功效函数之间有甚么却别呢?上面咱们就来具体讲述下。
固然国际良多PHP法式员仍在依托addslashes避免SQL注入,仍是建议人人增强中文避免SQL注入的反省。addslashes的成绩在 于黑客 可以用0xbf27来取代单引号,而addslashes只是将0xbf27修正为0xbf5c27,成为一个无效的多字节字符,个中的0xbf5c仍会 被看做是单引号,所以addslashes没法胜利拦阻。
固然addslashes也不是毫无用途,它是用于单字节字符串的处置,多字节字符仍是用mysql_real_escape_string吧。
别的关于php手册中get_magic_quotes_gpc的举例:
if (!get_magic_quotes_gpc()) {
$lastname = addslashes($_POST[‘lastname’]);
} else {
$lastname = $_POST[‘lastname’];
}
最好对magic_quotes_gpc已开放的情形下,仍是对$_POST[’lastname’]停止反省一下。
再说下mysql_real_escape_string和mysql_escape_string这2个函数的区分:
mysql_real_escape_string 必需在(PHP 4 >= 4.3.0, PHP 5)的情形下才干利用。不然只能用 mysql_escape_string ,二者的区分是:mysql_real_escape_string 思索到毗连确当前字符集,而mysql_escape_string 不思索。
总结一下:
* addslashes() 是强行加;
* mysql_real_escape_string() 会判别字符集,然而对PHP版本有请求;
* mysql_escape_string不思索毗连确当前字符集。
dz中的避免sql注入就是用addslashes这个函数,同时在dthmlspecialchars这个函数中有停止一些交换$string = preg_replace(/&((#(d{3,5}x{4}));)/, &\1,这个交换处理了注入的成绩,同时也处理了中文乱码的一些成绩
基础这个东西,有人问学php需要任何基础不? 其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。 说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。 我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。 本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。 不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。 再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。 要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。 当然这种网站的会员费就几十块钱。 学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。 如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了, 对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。 最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。 爱上php,他也会爱上你。 微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox支持的不是很好,所以能少用还是少用的好。 装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。 先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。 如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域, Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81 先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
页:
[1]
2