> php教程 > php手册 > 본문

php 防止查询的sql攻击方法总结

WBOY
풀어 주다: 2016-05-25 16:41:36
원래의
1284명이 탐색했습니다.

防止sql注入不但是新学的程序员朋友需要深入了解的一个重要知识点之外,还是我们这些写了多年程序的朋友也必须注意的东西,下面给新手介绍php 防止查询的sql攻击的一些例子,希望对各位会有所帮助.

一个入门级别的例子,代码如下:

$k = $_REQUEST['k']; 
$k = addslashes($k);//转义:单引号,双引号,反斜线,NULL 
$k = str_replace('%', '\%', $k); 
$k = str_replace('_', '\_', $k); 
$sql = "select * from users where name like '%$k%'"; 
if(!emptyempty($k)){ 
$res = mysql_query($sql, $con) or die(mysql_error()); 
if($row = mysql_fetch_assoc($res)){ 
    foreach($row as $k=>$v){ 
        echo $row[$k].&#39;:&#39;.$row[$v].&#39;<br />&#39;; 
    } 
} 
}else{ 
    echo &#39;******&#39;; 
} 
补充:mysql_real_escape_string();所以得SQL语句如果有类似这样的写法:
"select * from cdr where src =".$userId; 都要改成 $userId=mysql_real_escape_string($userId) 
例子代码如下:
<?php 
$clean = array(); 
$mysql = array(); 
$clean[&#39;last_name&#39;] = "O&#39;Reilly"; 
$mysql[&#39;last_name&#39;] = mysql_real_escape_string($clean[&#39;last_name&#39;]); 
$sql = "INSERT 
      INTO   user (last_name) 
      VALUES (&#39;{$mysql[&#39;last_name&#39;]}&#39;)";
로그인 후 복사

所有有打印的语句如echo,print等,在打印前都要使用htmlentities() 进行过滤,这样可以防止Xss,注意中文要写出,代码如下:

htmlentities($name,ENT_NOQUOTES,GB2312).


관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!