|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
由于ASP还是一种Script语言所没除了大量使用组件外,没有办法提高其工作效率。它必须面对即时编绎的时间考验,同时我们还不知其背后的组件会是一个什么样的状况;平安|平安性|平安|平安性平安关于一切使用程序来讲都是非常主要的。一个复杂使用程序里的某个掉误城市形成对数据库大概其他企业资本未经受权的会见,因而平安特别主要。一种经常使用的打击办法是将命令嵌进到用户的回应里,而从用户输出里过滤失落这些不法的字符就可以够避免这类打击。
同意用户输出不法的字符会增添用户招致成绩的时机。比方,良多使用程序都可以承受用户在SQL命令里增添的WHERE子句。歹意用户会经由过程向其输出的信息里增添分外命令的办法,来实行数据库服务器上的代码。比方,他们不是输出“Smith”,将其作为检索字符串,而是输出“Smith;EXECmaster..xp_cmdshelldir*.exe”。
上面这段代码是计划用来处置从服务器前往的多个Recordset的。用户的输出会包括一个分外的、未意料的的实行命令。当NextRecordset办法被挪用的时分,暗藏的歹意代码就会被实行。
这一打击能够经由过程过滤失落用户输出信息中的不法字符(在正文段里)来制止。如许做了以后,用户的输出仍旧被同意处置,可是扫除失落了一切的不法字符。
DimrstAsRecordset
Dimrst2AsRecordset
DimstrUserInputAsString
strUserInput="Smith;EXECmaster..xp_cmdshelldir*.exe"
Filterinputforinvalidcharacters
strUserInput=Replace(strUserInput,"<",vbNullString)
strUserInput=Replace(strUserInput,">",vbNullString)
strUserInput=Replace(strUserInput,"""",vbNullString)
strUserInput=Replace(strUserInput,"",vbNullString)
strUserInput=Replace(strUserInput,"%",vbNullString)
strUserInput=Replace(strUserInput,";",vbNullString)
strUserInput=Replace(strUserInput,"(",vbNullString)
strUserInput=Replace(strUserInput,")",vbNullString)
strUserInput=Replace(strUserInput,"&",vbNullString)
strUserInput=Replace(strUserInput,"+",vbNullString)
strUserInput=Replace(strUserInput,"-",vbNullString)
Setrst=NewRecordset
rst.ActiveConnection="PROVIDER=SQLOLEDB;DATASOURCE=SQLServer;"&_
"InitialCatalog=pubs;IntegratedSecurity=SSPI"
rst.Open"Select*fromauthorswhereau_lname="&strUserInput&_
"",,adOpenStatic
Dosomethingwithrecordset1
Setrst2=rst.NextRecordset()
Dosomethingwithrecordset2
在用户的输出中嵌进命令也是打击ASPWeb使用程序的一种罕见伎俩,也叫做跨网站剧本打击。过滤输出的内容并利用Server.HTMLEncode和Server.URLEncode这两个办法会有助于避免你ASP使用程序里这类成绩的产生。</p>缺乏可以共同遵循的行业标准,ASP还处在发展初期,大家对它的理解不同,如产品和服务标准,收费标准等,不利于行业的健康发展。 |
|