ASP编程:关于ASP编程中平安性成绩的办理计划
只要你想学,就没什么优缺点,上面那位大哥已经把网上的评论说了,但我认为想学哪个都一样,不然它就不可能在当今时代数字艺术方面存活到今天1、成绩形貌尺度的HTML语句大概javascript语句会改动输入了局
比方:
在留言板中,我们在留言内容中打进:
<fontsize=10color=red>你好</font>
假如你的ASP程序中没有屏障html语句,那末就会改动"你好"字体的巨细。
又好比:
在输出框中写个javascript的逝世轮回:
<aherf=http://someurl>特年夜旧事</a>
那末其他检察该留言的主人只需挪动鼠标到"特年夜旧事",上就会利用户的扫瞄器因逝世轮回而逝世失落。
办理办法和倡议:
编写相似程序时应当做好对此类操纵的提防,比如能够写一段程序判别客户真个输出,并屏障失落一切的HTML、javascript语句。使用上面函数HtmlEnCode()处置:
FunctionHtmlEnCode(str)
交换空格标记
str=Replace(str,"","")
交换字符"<",">"
str=Replace(str,"<","<")
str=Replace(str,">",">")
交换行
str=Replace(str,chr(13),"
")
HtmlEnCode=Str
EndFunction
2、成绩形貌
用户COPY下表单后,修正ACTION到指定的URL
比方:
新建一个公布页面,未到场客户真个数据正当性反省代码,若指定表单ACTION到提交页面,则经由过程你的程序出口,可向数据库输出分歧法的数据,或招致数据库堕落。
办理办法和倡议:
经由过程上面的历程能够办理:
SubCheckSubmit(Dir)
DimParentURL,ChildURL
读取上一个跳转页面的地点,而且转换为小写字符窜
ParentURL=lcase(Request.ServerVariables("HTTP_REFERER"))
ChildURL=lcase("http://www.kupage.com/"&Dir)
IfInstr(ParentURL,ChildURL)=0Then
StrTemp="
<li>您的提交文件分歧法!"
CallShowErrMsg(StrTemp)‘ShowErrMsg()堕落提醒历程
EndIf
EndSub
备注:
1)利用此历程时,事后要在ChildURL中输出本站域名,注重不克不及输出IP地点,应为HTTP_REFFERER前往的参数为域名。
2)传送的参数Dir是以后的文件地点的绝对目次路径。
3)假如这个网站有2个或2个以上的域名指向,能够在前提语句上并列一个前提,假如域名www.51hu.com也指向这个IP地点(更多依样画葫芦),前提语句头能够一下判别:
IfInstr(ParentURL,ChildURL)=0andInstr(ParentURL,lcase(“www.51hu.com”&Dir))Then
3.成绩形貌
用输出框修正SQL语句
办理办法和倡议:
屏障失落’“&+等标记,注重当克制键盘输’”&+等不法标记时,用户还大概用COPY的办法输出;另有一种办法就是用一个转换函数,把不法字符转换为正当,从数据库中掏出时再转换返来。
可自创以下函数:(在实行SQL命令前对特别字符举行转换)
FunctionAdjustedForSQL(adj_str)
DimAdjustedStr,I
Adj_str=Trim(adj_str)
AdjustedStr=””
IfLen(adj_str)>0Then
ForI=1ToLen(adj_str)
SelectCaseMid(adj_str,I,1)
Case”[”:
AdjustedStr=AdjustedStr&“[]”
Case“|”:
AdjustedStr=AdjustedStr&“[{-}]”
Case“’”:
AdjustedStr=AdjustedStr&“[&-()”
CaseElse:
AdjustedStr=AdjustedStr&Mid(adj_str,I,1)
EndSelect
Next
EndIf
AdjustedForSQL=AdjustedStr
EndFunction
4.成绩形貌
点击前进重复革新数据库
比方:
公布页面中,公布完一条信息后点击前进,持续公布,重复操纵,会招致系数据库过剩有效数据。
办理办法和倡议:
可在工夫上对下一次数据库操纵举行把持:
Session("PutInfo")=Now()
在举行数据库操纵时,最好是读取表单变量之前加下一句
IfDateAdd("s",30,Session("PutInfo"))>Now()Then
Response.Write"<scriptlanguage=javascript>alert(""您公布信息的距离工夫不克不及低于30秒!"");history.back();</script>"
Response.End
EndIf
5.成绩形貌
ASP程序暗码考证成绩
比方:
在用户名框中输出恣意值,暗码框中输出benor1=1,如许就绕过了暗码考证,将以数据库中第一个用户的身份上岸。
办理办法和倡议:
1)屏障输出框中的标记”’”
2)在用户登录页面临于用户名和暗码不要同时加以判别,只对用户名举行判别,依据用户名在数据库中查找是不是有与之婚配的暗码,再将数据库中的暗码与输出框中的内容举行对照
6.成绩形貌
间接修正扫瞄器中URL传送的参数值
办理办法和倡议:
1)只管不要在链接中带主要的参数,在承受参数时应对哀求人举行权限判别。
2)若传送的参数为数字,应对传送的参数做正当性判别。
当然了,现在国内CRM厂商的产品与其说是CRM,但从至少从我的角度分析上来看,充其量只是一个大型的进销存而已了,了解尚浅,不够胆详评,这里只提技术问题 Application:这个存储服务端的数据,如果不清除,会直到web应用程序结束才清除(例如重启站点) 运用经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。 哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的? 在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。 Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件 封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。 运用经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。 ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的一个不能很好支持跨平台的语言。 因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。
页:
[1]