仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 349|回复: 8
打印 上一主题 下一主题

[学习教程] ASP教程之ASP网站毛病剖析及进侵提防办法

[复制链接]
飘灵儿 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:09:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
国内有些大的CRM厂商的ASP就写得不错.无论是概念还是它里面用JAVASCRIPT的能力.并不是说现在的程序员用了ASP.NET来写程序就可以说自己高档了  怎样更好的到达提防黑客打击,自己提一下团体定见!第一,收费程序不要真的就收费用,既然你能够共享原码,那末打击者一样能够剖析代码。假如在细节上注重提防,那样你站点的平安性就年夜年夜的进步了。即便呈现了SQLInjection如许的毛病,打击者也不成能即刻拿下你的站点。
  因为ASP的便利易用,愈来愈多的网站背景程序都利用ASP剧本言语。可是,因为ASP自己存在一些平安毛病,略不当心就会给黑客供应无隙可乘。现实上,平安不但是网管的事,编程职员也必需在某些平安细节上注重,养成优秀的平安习气,不然会给本人的网站带来伟大的平安隐患。今朝,年夜多半网站上的ASP程序有如许那样的平安毛病,但假如编写程序的时分注重一点的话,仍是能够制止的。
  1、用户名与口令被破解
  打击道理:用户名与口令,常常是黑客们最感乐趣的器材,假如被经由过程某种体例看到源代码,成果是严峻的。
  提防技能:触及用户名与口令的程序最好封装在服务器端,只管少在ASP文件里呈现,触及与数据库毗连的用户名与口令应赐与最小的权限。呈现次数多的用户名与口令能够写在一个地位对照潜伏的包括文件中。假如触及与数据库毗连,在幻想形态下只给它以实行存储历程的权限,万万不要间接赐与该用户修正、拔出、删除纪录的权限。
  2、考证被绕过
  打击道理:如今必要经由考证的ASP程序年夜多是在页面头部加一个判别语句,但这还不敷,有大概被黑客绕过考证间接进进。
  提防技能:必要经由考证的ASP页面,可跟踪上一个页面的文件名,只要从上一页面转出去的会话才干读取这个页面。
  3、inc文件保守成绩
  打击道理:当存在ASP的主页正在制造且没有举行最初调试完成之前,能够被某些搜刮引擎灵活追加为搜刮工具。假如这时候候有人使用搜刮引擎对这些网页举行查找,会失掉有关文件的定位,并能在扫瞄器中检察到数据库地址和布局的细节,并以此展现完全的源代码。
  提防技能:程序员应当在网页公布前对它举行完全的调试;平安专家则必要加固ASP文件以便内部的用户不克不及看到它们。起首对.inc文件内容举行加密,其次也能够利用.asp文件取代.inc文件利用户没法从扫瞄器间接寓目文件的源代码。inc文件的文件名不要利用体系默许的大概有特别寄义简单被用户推测到的称号,只管利用无划定规矩的英笔墨母。
  4、主动备份被下载
  打击道理:在有些编纂ASP程序的工具中,当创立大概修正一个ASP文件时,编纂器主动创立一个备份文件,好比:UltraEdit就会备份一个.bak文件,如你创立大概修正了some.asp,编纂器会主动天生一个叫some.asp.bak文件,假如你没有删除这个bak文件,打击者能够间接下载some.asp.bak文件,如许some.asp的源程序就会被下载。
  提防技能:上传程序之前要细心反省,删除不用要的文档。对以BAK为后缀的文件要出格当心。
  5、特别字符
  打击道理:输出框是黑客使用的一个方针,他们能够经由过程输出剧本言语等对用户客户端形成破坏;假如该输出框触及数据查询,他们会使用特别查询语句,失掉更多的数据库数据,乃至表的全体。因而必需对输出框举行过滤。但假如为了进步效力仅在客户端举行输出正当性反省,仍有大概被绕过。
  提防技能:在处置相似留言板、BBS等输出框的ASP程序中,最好屏障失落HTML、JavaScript、VBScript语句,如无特别请求,能够限制只同意输出字母与数字,屏障失落特别字符。同时对输出字符的长度举行限定。并且不仅要在客户端举行输出正当性反省,同时要在服务器端程序中举行相似反省。
  6、数据库下载毛病
  打击道理:在用Access做背景数据库时,假如有人经由过程各类办法晓得大概猜到了服务器的Access数据库的路径和数据库称号,那末他也可以下载这个Access数据库文件,这长短常伤害的。
  提防技能:
  (1)为你的数据库文件称号起个庞大的十分规的名字,并把它放在几层目次下。所谓“十分规”,打个例如说,好比有个数据库要保留的是有关书本的信息,可不要给它起个“book.mdb”的名字,而要起个怪怪的称号,好比d34ksfslf.mdb,并把它放在如./kdslf/i44/studi/的几层目次下,如许黑客要想经由过程猜的体例失掉你的Access数据库文件就难上加难了。
  (2)不要把数据库名写在程序中。有些人喜好把DSN写在程序中,好比:
DBPath=Server.MapPath(“cmddb.mdb”)
conn.Open“driver={MicrosoftAccessDriver(*.mdb)};dbq=”&DBPath
  假设万一给人拿到了源程序,你的Access数据库的名字就一清二楚了。因而倡议你在ODBC里设置数据源,再在程序中如许写:
conn.open“shujiyuan”
  (3)利用Access来为数据库文件编码及加密。起首在“工具→平安→加密/解密数据库”当选取数据库(如:employer.mdb),然后按断定,接着会呈现“数据库加密后另存为”的窗口,可存为:“employer1.mdb”。
  要注重的是,以上的举措并非对数据库设置暗码,而只是对数据库文件加以编码,目标是为了避免别人利用其余工具来检察数据库文件的内容。
  接上去我们为数据库加密,起首翻开经由编码了的employer1.mdb,在翻开时,选择“独有”体例。然后拔取功效表的“工具→平安→设置数据库暗码”,接着输出暗码便可。如许即便别人失掉了employer1.mdb文件,没有暗码他也是没法看到employer1.mdb中的内容。
  7、提防远程注进打击
  这类打击在之前应当是对照罕见的打击体例,好比POST打击,打击者能够任意的改动要提交的数据值已到达打击目标.又如:COOKIES的假造,这一点更值得引发程序编写者或站长的注重,不要利用COOKIES来做为用户考证的体例,不然你和把钥匙留给贼是统一个事理.
  好比:
Iftrim(Request.cookies("uname"))="fqy"andRequest.cookies("upwd")=”fqy#e3i5.com”then
……..more………
Endif
  我想列位站长大概是喜欢写程序的伴侣万万别出这类毛病,真的是不成宽恕.假造COOKIES都几年了,你还用如许的就不克不及怪他人跑你的暗码.触及到用户暗码大概是用户上岸时,你最好利用session它才是最平安的.假如要利用COOKIES就在你的COOKIES上多加一个信息,SessionID,它的随机值是64位的,要猜解它,不成能.例:
ifnot(rs.BOForrs.eof)then
login="true"
Session("username"&sessionID)=Username
Session("password"&sessionID)=Password
‘Response.cookies(“username”)=Username
‘Response.cookies(“Password”)=Password
  上面我们来谈谈怎样提防远程注进打击,一样平常的打击都是将单表提交文件拖到当地,将FormACTION=”chk.asp”指向你服务器中处置数据的文件便可.假如你全体的数据过滤都在单表页上,那末祝贺你,你将已被剧本打击了.
  怎样才干停止如许的远程打击?好办,请看代码以下:程序体(9)
<%
server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
ifmid(server_v1,8,len(server_v2))<>server_v2then
response.write"<br><br><center>"
response.write""
response.write"你提交的路径有误,克制从站点内部提交数据请不要乱改参数!"
response.write"

"
  response.end
  endif
  %>
‘团体感到下面的代码过滤不是很好,有一些内部提交居然还能大公至正的出去,因而再写一个.
  ‘这个是过滤效果很好,倡议利用.
ifinstr(request.servervariables("http_referer"),"http://"&request.servervariables("host"))<1thenresponse.write"处置URL时服务器上堕落。
  假如您是在用任何手腕打击服务器,那你应当光荣,你的一切操纵已被服务器纪录,我们会第一工夫关照公安局与国度平安部门来查询拜访你的IP."
response.end
endif
  程序体(9)
  本觉得如许就高枕无忧了,在表格页上加一些限定,好比maxlength啦,等等..但天公就是那末不做美,你越怕甚么他越来甚么.你别忘了,打击者能够冲破sql注进打击时输出框长度的限定.写一个SOCKET程序改动HTTP_REFERER?我不会。网上宣布了如许一篇文章:
  ------------len.reg-----------------
  WindowsRegistryEditorVersion5.00
  [HKEY_CURRENT_USERSoftwareMicrosoftInternetExplorerMenuExt扩大(&E)]
  @="C:DocumentsandSettingsAdministrator桌面len.htm"
  "contexts"=dword:00000004
  -----------end----------------------
  -----------len.htm------------------
  
  ----------end-----------------------
  用法:先把len.reg导进注册表(注重文件路径)
  然后把len.htm拷到注册表中指定的中央.
  翻开网页,光标放在要改动长度的输出框上点右键,看多了一个叫扩大的选项了吧
  单击弄定!跋文:一样的也就能够凑合那些限定输出内容的剧本了.
  怎样办?我们的限定被饶过了,一切的勉力都白搭了?不,举起你de键盘,说不。让我们持续回到剧本字符的过滤吧,他们所举行的注进不过就是举行剧本打击。我们把一切的精神全都用到ACTION今后的页面吧,在chk.asp页中,我们将不法的字符全体过滤失落,了局怎样?我们只在后面虚晃一枪,叫他们往改注册表吧,当他们改完才会发明,他们所做的都是那末的白费。
  8、ASP木马
  已讲到这里了,再提示列位论坛站长一句,当心你们的文件上传:为何论坛程序被攻破后主机也随之被打击者占有。缘故原由就在……对!ASP木马!一个相对可爱的器材。病毒么?非也.把个文件任意放到你论坛的程序中,您老找往吧。不吐血才怪哦。怎样才干避免ASP木马被上传到服务器呢?办法很复杂,假如你的论坛撑持文件上传,请设定好你要上传的文件格局,我不同意利用可变动的文件格局,间接从程序上锁定,只要图像文件格局,和紧缩文件就完整能够,多给本人留点便利也就多给打击者留点便利。怎样判别格局,我这里搜集了一个,也改出了一个,人人能够看一下:
  程序体(10)
  ’判别文件范例是不是及格
  PrivateFunctionCheckFileExt(fileEXT)
  dimForumupload
  Forumupload="gif,jpg,bmp,jpeg"
  Forumupload=split(Forumupload,",")
  fori=0toubound(Forumupload)
  iflcase(fileEXT)=lcase(trim(Forumupload(i)))then
  CheckFileExt=true
  exitFunction
  else
  CheckFileExt=false
  endif
  next
  EndFunction
  ‘考证文件内容的正当性

setMyFile=server.CreateObject("Scripting.FileSystemObject")
  setMyText=MyFile.OpenTextFile(sFile,1)’读取文本文件
  sTextAll=lcase(MyText.ReadAll):MyText.close
  ’判别用户文件中的伤害操纵
  sStr="8 .getfolder .createfolder .deletefolder .createdirectory 
  .deletedirectory"
  sStr=sStr&" .saveas wscript.shell script.encode"
  sNoString=split(sStr," ")
  fori=1tosNoString(0)
  ifinstr(sTextAll,sNoString(i))<>0then
  sFile=Upl.Path&sFileSave:fs.DeleteFilesFile
  Response.write"<center><br><big>"&sFileSave&"文件中含有与操纵目次等有关的命令"&_
  "<br><fontcolor=red>"&mid(sNoString(i),2)&"</font>,为了平安缘故原由,<b>不克不及上传。<b>"&_"</big></center></html>"
  Response.end
  endif
  next
  把他们加到你的上传程序里做一次考证,那末你的上传程序平安性将会年夜年夜进步.
  甚么?你还不宁神?拿出杀手锏,请你的假造主机服务商来协助吧。上岸到服务器,将PROGID中的"shell.application"项和"shell.application.1"项更名或删除。再将”WSCRIPT.SHELL”项和”WSCRIPT.SHELL.1”这两项都要更名或删除。呵呵,我能够勇敢的说,国际大概近半以上的假造主机都没悔改。只能光荣你们的用户很互助,不然……我删,我删,我删删删……
Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。
愤怒的大鸟 该用户已被删除
沙发
发表于 2015-1-18 21:15:13 | 只看该作者
Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write
深爱那片海 该用户已被删除
板凳
发表于 2015-1-24 15:01:20 | 只看该作者
我想问如何掌握学习节奏(先学什么再学什么)最好详细点?
地板
发表于 2015-2-1 17:32:18 | 只看该作者
从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了
山那边是海 该用户已被删除
5#
发表于 2015-2-7 13:27:23 | 只看该作者
我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。
因胸联盟 该用户已被删除
6#
发表于 2015-2-22 07:44:22 | 只看该作者
完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。
分手快乐 该用户已被删除
7#
发表于 2015-3-6 23:50:33 | 只看该作者
Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名")
若天明 该用户已被删除
8#
发表于 2015-3-13 23:08:32 | 只看该作者
尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。
admin 该用户已被删除
9#
发表于 2015-3-20 22:45:40 | 只看该作者
ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 19:16

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表