细谈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 09 PHP
php shell超强免杀、减少体积工具实现代码
Oct 16 PHP
探讨php中遍历二维数组的几种方法详解
Jun 08 PHP
Linux下手动编译安装PHP扩展的例子分享
Jul 15 PHP
PHP中使用imagick实现把PDF转成图片
Jan 26 PHP
使用PHP+AJAX让WordPress动态加载文章的教程
Dec 11 PHP
zend framework重定向方法小结
May 28 PHP
PHP7常量数组用法分析
Sep 26 PHP
使用phpQuery获取数组的实例
Mar 13 PHP
Laravel中的Auth模块详解
Aug 17 PHP
Laravel使用原生sql语句并调用的方法
Oct 09 PHP
JS中彻底删除JSON对象组成的数组中的元素
Sep 22 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设计模式 Singleton(单例模式)
2011/06/26 PHP
twig模板常用语句实例小结
2016/02/04 PHP
CI映射(加载)数据到view层的方法
2016/03/28 PHP
JS获取IUSR_机器名和IWAM_机器名帐号的密码
2006/12/06 Javascript
js插件方式打开pdf文件(浏览器pdf插件分享)
2013/12/20 Javascript
escape编码与unescape解码汉字出现乱码的解决方法
2014/07/02 Javascript
javascript实现了照片拖拽点击置顶的照片墙代码
2015/04/03 Javascript
javascript计时器编写过程与实现方法
2016/02/29 Javascript
JavaScript浏览器对象模型BOM(BrowserObjectModel)实例详解
2016/11/29 Javascript
利用jQuery来动态为属性添加或者删除属性的简单方法
2016/12/02 Javascript
AngularJS 事件发布机制
2018/08/28 Javascript
JavaScript继承与聚合实例详解
2019/01/22 Javascript
基于Taro的微信小程序模板消息-获取formId功能模块封装实践
2019/07/15 Javascript
JS实现滚动条触底加载更多
2019/09/19 Javascript
[03:58]2014DOTA2国际邀请赛 龙宝赛后解密DK获胜之道
2014/07/14 DOTA
python列表操作之extend和append的区别实例分析
2015/07/28 Python
python中实现指定时间调用函数示例代码
2017/09/08 Python
详解django三种文件下载方式
2018/04/06 Python
python  Django中的apps.py的目的是什么
2018/10/15 Python
对Python subprocess.Popen子进程管道阻塞详解
2018/10/29 Python
Python使用Shelve保存对象方法总结
2019/01/28 Python
教你一步步利用python实现贪吃蛇游戏
2019/06/27 Python
python numpy存取文件的方式
2020/04/01 Python
Python小程序之在图片上加入数字的代码
2019/11/26 Python
Python 实现opencv所使用的图片格式与 base64 转换
2020/01/09 Python
python logging.basicConfig不生效的原因及解决
2020/02/20 Python
keras 使用Lambda 快速新建层 添加多个参数操作
2020/06/10 Python
浅谈Python 函数式编程
2020/06/20 Python
如何给HTML标签中的文本设置修饰线
2019/11/18 HTML / CSS
荷兰网上药店:Drogisterij.net
2019/09/03 全球购物
关于毕业的广播稿
2014/01/10 职场文书
植树节活动总结
2014/04/30 职场文书
疾病捐款倡议书
2014/05/13 职场文书
mongoDB数据库索引快速入门指南
2022/03/23 MongoDB
Vscode中SSH插件如何远程连接Linux
2022/05/02 Servers
Spring Cloud OpenFeign模版化客户端
2022/06/25 Java/Android