细谈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 相关文章推荐
PHP 强制下载文件代码
Oct 24 PHP
php异常处理技术,顶级异常处理器
Jun 13 PHP
PHP生成Gif图片验证码
Oct 27 PHP
解决php接收shell返回的结果中文乱码问题
Jan 23 PHP
php中$美元符号与Zen Coding冲突问题解决方法分享
May 28 PHP
PHP在网页中动态生成PDF文件详细教程
Jul 05 PHP
Laravel框架学习笔记(一)环境搭建
Oct 15 PHP
php二维数组合并及去重复的方法
Mar 04 PHP
PHP实现在线阅读PDF文件的方法
Jun 17 PHP
php身份证号码检查类实例
Jun 18 PHP
PHP查看当前变量类型的方法
Jul 31 PHP
PHP单例模式数据库连接类与页面静态化实现方法
Mar 20 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 HTML代码串 截取实现代码
2009/06/29 PHP
如何使用Strace调试工具
2013/06/03 PHP
浅析is_writable的php实现
2013/06/18 PHP
linux下使用crontab实现定时PHP计划任务失败的原因分析
2014/07/05 PHP
PHP多个图片压缩成ZIP的方法
2020/08/18 PHP
javascript 密码强度验证规则、打分、验证(给出前端代码,后端代码可根据强度规则翻译)
2010/05/18 Javascript
用JavaScript对JSON进行模式匹配(Part 1-设计)
2010/07/17 Javascript
javascript实现跨域的方法汇总
2015/06/25 Javascript
AngularJS入门教程之AngularJS表达式
2016/04/18 Javascript
jQuery中on绑定事件后引发的事件冒泡问题如何解决
2016/05/25 Javascript
移动端滑动插件Swipe教程
2016/10/16 Javascript
MUI  Scroll插件的使用详解
2017/04/13 Javascript
3分钟掌握常用的JS操作JSON方法总结
2017/04/25 Javascript
Angular项目中$scope.$apply()方法的使用详解
2017/07/26 Javascript
Vue-router结合transition实现app前进后退动画切换效果的实例
2017/10/11 Javascript
JavaScript原生实现观察者模式的示例
2017/12/15 Javascript
Vue Router history模式的配置方法及其原理
2019/05/30 Javascript
用Javascript实现发送短信验证码间隔功能
2021/02/08 Javascript
[42:34]VP vs VG 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
[03:21]【TI9纪实】Old Boys
2019/08/23 DOTA
python动态网页批量爬取
2016/02/14 Python
利用Python如何生成便签图片详解
2018/07/09 Python
Python基础之循环语句用法示例【for、while循环】
2019/03/23 Python
Python绘制股票移动均线的实例
2019/08/24 Python
解决django model修改添加字段报错的问题
2019/11/18 Python
Python 多进程原理及实现
2020/12/21 Python
CSS3制作皮卡丘动画壁纸的示例
2020/11/02 HTML / CSS
最新大学生自我评价
2013/09/24 职场文书
汉语言文学毕业生求职信
2013/10/01 职场文书
安全教育感言
2014/03/04 职场文书
司仪主持词两篇
2014/03/22 职场文书
市场推广策划方案
2014/06/02 职场文书
开学第一周值周总结
2015/07/16 职场文书
css 边框添加四个角的实现代码
2021/10/16 HTML / CSS
Netty分布式客户端处理接入事件handle源码解析
2022/03/25 Java/Android
CSS子盒子水平和垂直居中的五种方法
2022/07/23 HTML / CSS