仓酷云

标题: PHP编程:PHP与SQL注入进击 [打印本页]

作者: 乐观    时间: 2015-2-4 00:09
标题: PHP编程:PHP与SQL注入进击
会PHP吗?会,我会把一加一的运算写在函数里,然后调用啦!进击       SQL注入进击是黑客进击网站最经常使用的手腕。假如你的站点没有利用严厉的用户输出查验,那末常轻易遭到SQL注入进击。SQL注入进击凡是经由过程给站点数据库提交不良的数据或查询语句来完成,极可能使数据库中的记载遭到表露,更改或被删除。上面来谈谈SQL注入进击是若何完成的,又若何提防。
 看这个例子:

// supposed input
$name = “ilia’; DELETE FROM users;”;
mysql_query(“SELECT * FROM users WHERE name=’{$name}’”);


 很分明最初数据库履行的号令是:

SELECT * FROM users WHERE name=ilia; DELETE FROM users


 这就给数据库带来了灾害性的效果--一切纪录都被删除。

 不外假如你利用的数据库是MySQL,那末还好,mysql_query()函数不答应直接履行如许的操作(不克不及单行停止多个语句操作),所以你可以宁神。假如你利用的数据库是SQLite或PostgreSQL,撑持如许的语句,那末就将面对没顶之灾了。
 下面提到,SQL注入次要是提交不平安的数据给数据库来到达进击目标。为了避免SQL注入进击,PHP自带一个功效可以对输出的字符串停止处置,可以在较底层对输出停止平安上的初步处置,也即Magic Quotes。(php.ini magic_quotes_gpc)。假如magic_quotes_gpc选项启用,那末输出的字符串中的单引号,双引号和其它一些字符前将会被主动加上反斜杠\。
 但Magic Quotes并非一个很通用的处理计划,没能屏障一切有潜伏风险的字符,而且在很多办事器上Magic Quotes并没有被启用。所以,咱们还需求利用其它多种办法来避免SQL注入。
 很多数据库自己就供应这类输出数据处置功效。例如PHP的MySQL操作函数中有一个叫mysql_real_escape_string()的函数,可将特别字符和能够引发数据库操作失足的字符本义。
 看这段代码:

//假如Magic Quotes功用启用
if (get_magic_quotes_gpc()) {
$name = stripslashes($name);
}else{
$name = mysql_real_escape_string($name);
}

mysql_query(“SELECT * FROM users WHERE name=’{$name}’”);

 注重,在咱们利用数据库所带的功效之前要判别一下Magic Quotes是不是翻开,就像上例中那样,不然两次反复处置就会失足。假如MQ已启用,咱们要把加上的\去失落才失掉真实数据。
 除对以上字符串模式的数据停止预处置以外,贮存Binary数据到数据库中时,也要注重停止预处置。不然数据能够与数据库本身的存储格局相抵触,引发数据库溃散,数据纪录丧失,乃至丧失全部库的数据。有些数据库如PostgreSQL,供应一个专门用来编码二进制数据的函数pg_escape_bytea(),它可以对数据停止相似于Base64那样的编码。
 如:
// for plain-text data use:
pg_escape_string($regular_strings);

// for binary data use:
pg_escape_bytea($binary_data);
 另外一种情形下,咱们也要采取如许的机制。那就是数据库体系自己不撑持的多字节言语如中文,日语等。个中有些的ASCII局限和二进制数据的局限堆叠。
 不外对数据停止编码将有能够招致像LIKE abc% 如许的查询语句生效。
  终于理解了数据库的概念,而且让你兴奋不已的是你终于可以通过PHP来连接数据库了,这期间你是怎么学会的,我们不去考证了,但是事实证明,你已经可以了。
作者: 只想知道    时间: 2015-2-4 09:26
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
作者: 再见西城    时间: 2015-2-5 06:24
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
作者: 变相怪杰    时间: 2015-2-11 06:15
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
作者: 第二个灵魂    时间: 2015-2-25 00:24
当然这种网站的会员费就几十块钱。
作者: 海妖    时间: 2015-2-25 17:07
当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,
作者: 精灵巫婆    时间: 2015-3-7 23:53
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
作者: 爱飞    时间: 2015-3-15 16:59
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
作者: 柔情似水    时间: 2015-3-22 02:09
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
作者: 灵魂腐蚀    时间: 2015-3-24 10:15
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
作者: 山那边是海    时间: 2015-4-1 11:10
写的比较杂,因为我也是个新手,不当至于大家多多指正。
作者: 若天明    时间: 2015-4-1 12:54
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
作者: 分手快乐    时间: 2015-4-2 10:27
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
作者: 透明    时间: 2015-4-2 19:14
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
作者: 谁可相欹    时间: 2015-4-8 02:41
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
作者: 深爱那片海    时间: 2015-4-10 08:55
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
作者: 兰色精灵    时间: 2015-4-26 08:10
学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
作者: 小女巫    时间: 2015-5-12 04:01
实践是检验自己会不会的真理。
作者: 简单生活    时间: 2015-6-27 22:47
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
作者: 金色的骷髅    时间: 2015-7-7 08:29
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
作者: 愤怒的大鸟    时间: 2015-7-11 20:43
Ps:以上纯属原创,如有雷同,纯属巧合




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2