|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
小试一下身手,大概是没问题了,那么交给你个任务,做个留言本吧,这和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[a-fA-F0-9]{4}));)/, &\1,这个交换处理了注入的成绩,同时也处理了中文乱码的一些成绩
基础这个东西,有人问学php需要任何基础不? |
|