sql注入:就是经过把SQL饬令拔出到Web表单递交或输出域名或页面申请的查问字符串,终极达到诈骗效劳器执行歹意的SQL饬令。
预解决语句针对SQL注入长短常有用的,由于参数值发送后应用没有同的协定,保障了数据的非法性。预解决看做是想要运转的SQL的一种编译过的模板,它能够应用变量参数进行定制。 (保举学习:PHP视频教程)
进攻办法一
mysql_real_escape_string – 本义SQL 语句中应用的字符串中的非凡字符,并思考到衔接确当前字符集 !
$sql = "select count(*) as ctr from users where username ='".mysql_real_escape_string($username)."' and password='". mysql_real_escape_string($pw)."' limit 1";
办法二:
关上magic_quotes_gpc来避免SQL注入。php.ini中有一个设置:magic_quotes_gpc =
Off这个默许是封闭的,假如它关上后将主动把用户提交对sql的查问进行转换,比方把 ’ 转为 '等,关于避免sql打针有严重作用。
假如magic_quotes_gpc=Off,则应用addslashes()函数。
办法三:
自界说函数
function check_param($value=null) { #select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile $str = 'select|insert|and|or|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile'; if(!$value) { exit('不参数!'); }elseif(eregi($str, $value)) { exit('参数合法!'); } return true; } function str_check( $value ) { if(!get_magic_quotes_gpc()) { // 进行过滤 $value = addslashes($value); } $value = str_replace("_", "\_", $value); $value = str_replace("%", "\%", $value); return $value; } function post_check($value) { if(!get_magic_quotes_gpc()) { // 进行过滤 $value = addslashes($value); } $value = str_replace("_", "\_", $value); $value = str_replace("%", "\%", $value); $value = nl2br($value); $value = htmlspecialchars($value); return $value; }
以上就是php防sql注入原理的具体内容,更多请存眷资源魔其它相干文章!
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
抱歉,评论功能暂时关闭!