用户名:
密 码: 记住
您当前的位置:首页 > 网络编程 > php教程

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

时间:2015-01-23  来源:西部数据  作者:西部数据

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

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

  1. $k = $_REQUEST['k']; 
  2.  
  3. $k = addslashes($k);//转义:单引号,双引号,反斜线,NULL 
  4.  
  5. $k = str_replace('%''\%'$k); 
  6.  
  7. $k = str_replace('_''\_'$k); 
  8.  
  9. $sql = "select * from users where name like '%$k%'"
  10.  
  11. if(!emptyempty($k)){ 
  12.  
  13. $res = mysql_query($sql$conor die(mysql_error()); 
  14.  
  15. if($row = mysql_fetch_assoc($res)){ 
  16.  
  17. foreach($row as $k=>$v){ 
  18.  
  19. echo $row[$k].':'.$row[$v].'<br />'
  20.  
  21.  
  22. //开源代码phpfensi.com 
  23. }else
  24.  
  25. echo '******'
  26.  

补充:mysql_real_escape_string();所以得SQL语句如果有类似这样的写法:

"select * from cdr where src =".$userId; 都要改成 $userId=mysql_real_escape_string($userId) 

例子代码如下:

  1. <?php 
  2.  
  3. $clean = array(); 
  4. $mysql = array(); 
  5.  
  6. $clean['last_name'] = "O'Reilly"
  7. $mysql['last_name'] = mysql_real_escape_string($clean['last_name']); 
  8.  
  9. $sql = "INSERT 
  10.       INTO   user (last_name) 
  11.       VALUES ('{$mysql['last_name']}')"; 
  12.  
  13. ?> 

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

htmlentities($name,ENT_NOQUOTES,GB2312).

来顶一下
返回首页
返回首页
推荐资讯
WiFi太不安全:7岁女孩11分钟内入侵公共网络 WiFi太不安全:7岁女孩11分钟内入侵近期刚刚发布研究说WiFi网络能获得人们手机里多少私人信息,
不服跑个分?人工智能也出现“刷分”乱象 不服跑个分?人工智能也出现“刷分2014年,人工智能领域突然爆发,成为了科研和科技创业的热门
相关文章
栏目更新
栏目热门