细谈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初学者头痛的十四个问题
Jul 12 PHP
php 随机生成10位字符代码
Mar 26 PHP
PHP开发负载均衡指南
Jul 17 PHP
php join函数应用
May 04 PHP
用PHP书写安全的脚本代码
Feb 05 PHP
PHP filter_var() 函数 Filter 函数
Apr 25 PHP
js限制checkbox勾选的个数以及php获取多个checkbbox的方法深入解析
Jul 18 PHP
PHP+APACHE实现网址伪静态
Feb 22 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
Sep 11 PHP
php5.3后静态绑定用法详解
Nov 11 PHP
PHP实现对xml的增删改查操作案例分析
May 19 PHP
php利用fsockopen GET/POST提交表单及上传文件
May 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中上传大体积文件时需要的设置
2006/10/09 PHP
怎样才能成为PHP高手?学会“懒惰”的编程
2006/12/05 PHP
PHP CURL post数据报错 failed creating formpost data
2016/10/16 PHP
php 调用ffmpeg获取视频信息的简单实现
2017/04/03 PHP
struts2 jquery 打造无限层次的树
2009/10/23 Javascript
jquery1.4.2 for Visual studio 2010 模板文件
2010/07/14 Javascript
javascript date格式化示例
2013/09/25 Javascript
Jquery中的层次选择器与find()的区别示例介绍
2014/02/20 Javascript
Javascript小技巧之生成html元素
2014/05/15 Javascript
jquery遍历函数siblings()用法实例
2015/12/24 Javascript
JS组件中bootstrap multiselect两大组件较量
2016/01/26 Javascript
AngularJS身份验证的方法
2016/02/17 Javascript
基于JS实现回到页面顶部的五种写法(从实现到增强)
2016/09/03 Javascript
jQuery实现邮箱下拉列表自动补全功能
2016/09/08 Javascript
js数字舍入误差以及解决方法(必看篇)
2017/02/28 Javascript
jQuery查找dom的几种方法效率详解
2017/05/17 jQuery
JavaScript学习笔记之图片库案例分析
2019/01/08 Javascript
Vue CLI项目 axios模块前后端交互的使用(类似ajax提交)
2019/09/01 Javascript
使用easyui从servlet传递json数据到前端页面的两种方法
2019/09/05 Javascript
NProgress显示顶部进度条效果及使用详解
2019/09/21 Javascript
[45:56]Ti4正赛第一天 VG vs NEWBEE 3
2014/07/19 DOTA
Python实现比较扑克牌大小程序代码示例
2017/12/06 Python
浅析Git版本控制器使用
2017/12/10 Python
python时间日期函数与利用pandas进行时间序列处理详解
2018/03/13 Python
Pycharm代码无法复制,无法选中删除,无法编辑的解决方法
2018/10/22 Python
Python多进程编程常用方法解析
2020/03/26 Python
快速解决Django关闭Debug模式无法加载media图片与static静态文件
2020/04/07 Python
使用Numpy对特征中的异常值进行替换及条件替换方式
2020/06/08 Python
HTML5拖拉上传文件的简单实例
2017/01/11 HTML / CSS
英国网上花店:Bunches
2016/11/29 全球购物
李维斯法国官网:Levi’s法国
2019/07/13 全球购物
在网络中有两台主机A和B,并通过路由器和其他交换设备连接起来,已经确认物理连接正确无误,怎么来测试这两台机器是否连通?如果不通,怎么来判断故障点?怎么排
2014/01/13 面试题
特教教师先进事迹
2014/05/21 职场文书
助人为乐道德模范事迹材料
2014/08/16 职场文书
2014年团支部工作总结
2014/11/17 职场文书
Java8 Stream API 提供了一种高效且易于使用的处理数据的方式
2022/04/13 Java/Android