细谈php中SQL注入攻击与XSS攻击


Posted in PHP onJune 10, 2012

例如: SQL注入攻击
XSS攻击

任意执行代码 
文件包含以及CSRF. 
}

关于SQL攻击有很多文章还有各种防注入脚本,但是都不能解决SQL注入的根本问题
见代码:

<?php 
mysql_connect("localhost","root","123456")or die("数据库连接失败!"); 
mysql_select_db("test1"); 
$user=$_post['uid']; 
$pwd=$_POST['pass']; 
if(mysql_query("SELECT * from where 
admin 
= `username`='$user' or `password`='$pwd'"){ 
echo "用户成功登陆.."; 
} eles { 
echo "用户名或密码出错"; 
} 
?>

很简单的一段代码,功能是用于检测用户名或密码是否正确,可是在一些恶意攻击者中提交一些敏感代码.后果可想而知.. post判断注入的方式有2种。
1.在form表单的文本框输入 "or‘1'=1"或者"and 1=1"
在查询数据库的语句就应该是:
SELECT admin from where login = `user`=''or‘1'=1' or `pass`=‘xxxx'
当然也不会出现什么错误,因为or在sql的语句中代表和,或的意思。当然也会提示错误。
当时我们已经发现了可以执行SQL语句之后就可以查询当前表的所有信息。例如:正确的管理员账户和密码进行登录入侵。。
修复方式1:
使用javascript脚本过滤特殊字符(不推荐,指标不治本)
如果攻击者禁用了javascript还是可以进行SQL注入攻击。。
修复方式2:
使用mysql的自带函数进行过滤。
见代码:
<?php 
// 省略连接数据库等操作。。 
$user=mysql_real_escape_string($_POST['user']); 
mysql_query("select * from admin whrer `username`='$user'"); 
?>

既然前面说道了xss攻击,我们再来说说XSS攻击以及防范吧。。
提交表单:
<form method="post" action=""> 
<intup tyep="text" name="test"> 
<intup tyep="submit" name="sub" value="提交"> 
</form>

接收文件:
if(empty($_POST['sub'])){ 
echo $_POST['test']; 
}

很简单的一段代码,在这里只是模拟了下使用场景..
加入攻击者提交
<script>alert(document.cookie);</script>
在返回的页面就应该显示当前页面的cookie信息。
我们可以运用到某些留言板上(提前是没过滤的),然后当管理员审核改条信息时盗取COOKIE信息,并发送到攻击者的空间或者邮箱。。攻击者可以使用cookie修改器进行登陆入侵了。。
当然解决方案也有很多。。下面就介绍一个最常用的方式吧。
修复方案1:使用javascript进行转义
修复方案2:使用php内置函数进行转义
代码如下:
[code]
if(empty($_POST['sub'])){
$str=$_POST['test'];
htmlentities($srt);
echo $srt;
}
[html]
好了,关于SQL注入攻击和XSS攻击的案例与修复方法就讲的差不多了。
当然还有其他的解决方法:
例如:使用php框架
还有其他的一些方法。。当然了,XSS的运用范围与攻击方式很多也很广。本文只针对php的提交方式进行过滤,还有其他的需要自己去研究 ^_^~
此文出此:Aey uhost team(team.hake.cc),转载请带上版权。

y0umer
2012/6/7

PHP 相关文章推荐
珊瑚虫IP库浅析
Feb 15 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装(win+linux)
May 05 PHP
PHP中的生成XML文件的4种方法分享
Oct 06 PHP
PHP中3种生成XML文件方法的速度效率比较
Oct 06 PHP
ThinkPHP的L方法使用简介
Jun 18 PHP
讲解WordPress中用于获取评论模板和搜索表单的PHP函数
Dec 28 PHP
thinkphp中的url跳转用法分析
Jul 12 PHP
php集成动态口令认证
Jul 21 PHP
php版微信开发Token验证失败或请求URL超时问题的解决方法
Sep 23 PHP
php+mysql开发中的经验与常识小结
Mar 25 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
Feb 18 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
Feb 21 PHP
逆序二维数组插入一元素的php代码
Jun 08 #PHP
PHP 年龄计算函数(精确到天)
Jun 07 #PHP
PHP序列号生成函数和字符串替换函数代码
Jun 07 #PHP
PHP 将逗号、空格、回车分隔的字符串转换为数组的函数
Jun 07 #PHP
PHP 修复未正常关闭的HTML标签实现代码(支持嵌套和就近闭合)
Jun 07 #PHP
PHP 文本文章分页代码 按标记或长度(不涉及数据库)
Jun 07 #PHP
PHP 查找字符串常用函数介绍
Jun 07 #PHP
You might like
php设计模式 Bridge (桥接模式)
2011/06/26 PHP
PHP实现文件下载断点续传详解
2014/10/15 PHP
php将数组存储为文本文件方法汇总
2015/10/28 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
在线编辑器中换行与内容自动提取
2009/04/24 Javascript
web开发人员学习jQuery的6大理由及jQuery的优势介绍
2013/01/03 Javascript
使用jQuery实现的网页版的个人简历(可换肤)
2013/04/19 Javascript
jQuery实现鼠标经过图片预览大图效果
2014/04/10 Javascript
利用jquery操作Radio方法小结
2014/10/20 Javascript
JQuery表单验证插件EasyValidator用法分析
2014/11/15 Javascript
简介JavaScript中fixed()方法的使用
2015/06/08 Javascript
Jquery 全选反选实例代码
2015/11/19 Javascript
关于vue.js弹窗组件的知识点总结
2016/09/11 Javascript
js 提交form表单和设置form表单请求路径的实现方法
2016/10/25 Javascript
Bootstrap栅格系统学习笔记
2016/11/25 Javascript
浅谈原生JS实现jQuery的animate()动画示例
2017/03/08 Javascript
Bootstrap table学习笔记(2) 前后端分页模糊查询
2017/05/18 Javascript
使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
2018/05/01 Javascript
JS拖动选择table里的单元格完整实例【基于jQuery】
2019/05/28 jQuery
JS用最简单的方法实现四舍五入
2019/08/27 Javascript
vue中使用element ui的弹窗与echarts之间的问题详解
2019/10/25 Javascript
vue中keep-alive,include的缓存问题
2019/11/26 Javascript
[02:04]2014DOTA2国际邀请赛 BBC小组赛第三天总结
2014/07/12 DOTA
Python利用itchat库向好友或者公众号发消息的实例
2019/02/21 Python
python实现对象列表根据某个属性排序的方法详解
2019/06/11 Python
详解pyppeteer(python版puppeteer)基本使用
2019/06/12 Python
Python中logging日志库实例详解
2020/02/19 Python
Django 自定义权限管理系统详解(通过中间件认证)
2020/03/11 Python
升级keras解决load_weights()中的未定义skip_mismatch关键字问题
2020/06/12 Python
英语教学随笔感言
2014/02/20 职场文书
《圆明园的毁灭》教学反思
2014/02/28 职场文书
陈欧广告词
2014/03/14 职场文书
中国入世承诺
2014/04/01 职场文书
《生命的药方》教学反思
2014/04/08 职场文书
天猫活动策划方案
2014/08/21 职场文书
学校推普周活动总结
2015/05/07 职场文书