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注入原理的具体内容,更多请存眷资源魔其它相干文章!
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
抱歉,评论功能暂时关闭!