当前位置: 首页 > news >正文

asp or 漏洞

 漏洞描述:
在login.asp中,接收用户输入的Userid和Password数据,并分别赋值给user和pwd,然后再用sql="select * from admin where username="&user&" and password="&pwd&"" 这句来对用户名和密码加以验证。 
以常理来考虑的话,这是个很完整的程序了。而在实际的使用过程中,整套程序也的确可能正常使用。 
  
但是如果Userid的值和password的值被赋于:safer’ or’1’=’1’ 这时,sql="select * from admin where username="&user&" and password="&pwd&"" 就成了: 
  
sql="select * from reg where user=safer’ or’1’=’1’ and pass=safer’ or’1’=’1’   

怎么样?!我不说大家也明白了吧! 
  
既然有这样的问题,接下来我们就来看看如何解决它。从上面的程序中各位也可以看出,只要对用户输入的数据进行严格过滤就可以了。具体可以参下面的程序: 

Quote
  〈% 
  user=request.from("UserID") 
  pass=request.from("password") 
  for i=1 to len(UserID) 
  cl=mid(UserID,i,1) 
  if cl="" or us="%" or us="〈" or us="〉" then 
  response.redirect "54safer ..haha" 
  response.end 
  end if 
  next 
  %〉 

同样是先取得用户输入数据,然后分析用户输入的每一个字符,如发现异常,则转到错误页面。 
if cl="" or us="%" or us="〈" or us="〉" then 这一句中可以加入任意的过滤字符,跟据具体情况而定。 
********************************************************************
漏洞修补:
username=replace(trim(request("username")),"’","")
password=replace(trim(Request("password")),"’","")

把“’”给过滤了
如果你想用“’”当做密码 就用下面的方法

1、select * from user where user=’ " & User & "’ " 
2、如果返回不为假,则取密码 
pass=rs("passwd") 
3、判断:if pass=password 
4、得出结论。 

例子:

Quote
sql="select * from ****_admin where admin_pass=’"&admin_pass&"’ and admin=’"&admin&"’"
rs.open sql,conn,1,3
if not(rs.bof and rs.eof) then
if admin_pass=rs("admin_pass") then
session("admin")=rs("admin")

 

 

 

现在再介绍简单有效的傻瓜防止asp-sql注入的方法
在需要注入的页面顶部加入

 

相关文章:

  • MySQL常用命令一览
  • MYSQL出错代码列表一览
  • MySQL修改密码方法总结
  • 在b/s开发中经常用到的javaScript技术整理
  • asp 购物车类
  • 用js改变css样式
  • js设置控件的readonly和enabled属性问题
  • sql内置函数
  • sql CHARINDEX
  • JS去空格
  • js验证
  • 服务器端控件三种ID:ID,ClientID和UniqueID
  • IIS 无权查看网页 HTTP 错误 401.2 - 未授权:服务器配置导致登录失败解决方法
  • access常用函数
  • access IIf函数
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • C语言笔记(第一章:C语言编程)
  • es6
  • js ES6 求数组的交集,并集,还有差集
  • PhantomJS 安装
  • PHP CLI应用的调试原理
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • Spring-boot 启动时碰到的错误
  • Sublime Text 2/3 绑定Eclipse快捷键
  • unity如何实现一个固定宽度的orthagraphic相机
  • vue学习系列(二)vue-cli
  • Web标准制定过程
  • 构造函数(constructor)与原型链(prototype)关系
  • 检测对象或数组
  • 聊聊flink的BlobWriter
  • 少走弯路,给Java 1~5 年程序员的建议
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 通过git安装npm私有模块
  • 微信小程序--------语音识别(前端自己也能玩)
  • 消息队列系列二(IOT中消息队列的应用)
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 智能合约Solidity教程-事件和日志(一)
  • Nginx实现动静分离
  • RDS-Mysql 物理备份恢复到本地数据库上
  • ​低代码平台的核心价值与优势
  • ​学习一下,什么是预包装食品?​
  • # C++之functional库用法整理
  • # Java NIO(一)FileChannel
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #include到底该写在哪
  • (11)MSP430F5529 定时器B
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (多级缓存)缓存同步
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (十六)一篇文章学会Java的常用API