`
charrysong
  • 浏览: 50429 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论
阅读更多

sp常识
server.htmlEncode还为HTML编码(用于输出不正常)
很多人抱怨ASP安全不高、速度不快,其实ASP也很优秀。用PHP一样可以写出拉圾程序,用ASP依然可以写出很优秀的程序。安全高不高取决于编程 者,PHP依然可以写出漏洞百出的程序,所以,别抱怨ASP这样那样的毛病,我写ASP已经三年多了,一直都认为它很方便,虽然有些地方写着很复杂,及不 上PHP,因为这样,ASP写着感觉更爽。把多年总结的一些ASP常见的安全事项写出来。

一、古老的绕验证漏洞

虽然古老,依然存在于很多小程序之中,比如一些企业网站的后台,简单谈谈。这个漏洞出现在没有对接受的变量进行过滤,带入数据库判断查询时,造成SQL语句的逻辑问题。例如以下代码存在问题:

username=request("username")

password=request("password")

sql = "select * from user where username='" & username & "' and password='" & password & "'"

很容易看出在没有对username、password进行过滤就带入SQL语句进行判断了,提交'or''=',SQL语句就变成了select * from user where username=''or''='' and password=''or''='',返回值为ture。

一般在登录处过滤字符,代码如下:

replace(request.form("username"),"'","")

replace(request.form("password"),"'","")

上面指定了POST方式接受提交过来的数据,指定接受方式很重要,下面谈谈。

二、指定接受数据提交方式

ASP 中的Request对象可以接受GET、POST、COOKIES请求。将其简化写成**=Request("参数")的格式接受数据,此时WEB接受数 据时先以GET方式接受,如果不匹配再以POST方式接受,最后再以Cookies方式接受。也就是Cookies注射造成的原因。

指定接受方式不仅可以避免Cookies注射,还可以提高WEB处理的速度。

一个存在问题的代码如下:

id=request("id")

sql="select * from Articles where id="&id&""

set rs=conn.execute(sql)

这里不管id过滤没有过滤,关键是id接受时没有指定接受方式,造成了Cookies注射。

这样写:

id=request.QueryString("id")

sql="select * from Articles where id="&id&""

set rs=conn.execute(sql)

id使用了get方式接受数据。

三、HtmlEnCode

HtmlEnCode是ASP中Server的一个对象,可以直接格式化HTML不被执行在浏览器上,比如以下代码:

<%

lx="<script>alert('test')</script>"

response.write lx

%>

最后浏览时弹出提示窗口。

如果改成以下代码:

<%

lx="<script>alert('test')</script>"

lx=Server.HtmlEncode(lx)

response.write lx

%>

浏览器直接显示<script>alert('test')</script>,HTML代码直接被格式化了。

这个对象很有用,一般在接受数据不需要使用HTML代码格式的情况下,直接使用它进行过滤。比如搜索结果显示、留言板等等。如:

test=request.QueryString("test")

response.write test

以上代码中,test没有进行过滤直接显示了,如果test接受一个内容为<script>alert("test")</script>时,代码被执行,就会弹出一个内容为test的提示。

改写为下:

test=server.htmlencode(request.QueryString("test"))

response.write test

那么再次提交<script>alert("test")</script>,浏览器就显示一段字符"<script>alert("test")</script>".

四、注射漏洞

注射方面就不多介绍了,介绍起来太多了,大家也很熟悉,直接说防范方法,有问题的代码如下:

id=request("id")

sql="select * from Articles where id="&id&""

set rs=conn.execute(sql)

明显id不进行过滤带入了SQL查询,最简单的方法就是判断id是否为整型数据,代码如下:

id=Request("id")

if Not IsNumeric(id) then '这里用IsNumeric判断id是否为整型

Response.write "错误提交"

Response.end

else

sql="select * from Articles where id="&id&""

set rs=conn.execute(sql)

end if

还可以使用判断提交内容是否含有非法字符,直接贴代码,代码是以前小蓝的Tryaspwebsystem程序中的防注射代码,经过我们两个改了又改:

<%

dim sql_injdata

SQL_injdata = "'|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare"

SQL_inj = split(SQL_Injdata,"|")

'get拦截

If Request.QueryString<>"" Then

For Each SQL_Get In Request.QueryString

For SQL_Data=0 To Ubound(SQL_inj)

if instr(LCase(Request.QueryString(SQL_Get)),Sql_Inj(Sql_DATA))>0 Then

Response.Write "非法提交"

Response.end

end if

next

Next

End If

'post注入拦截 If Request.Form<>"" Then

For Each Sql_Post In Request.Form

For SQL_Data=0 To Ubound(SQL_inj)

if instr(LCase(Request.Form(Sql_Post)),Sql_Inj(Sql_DATA))>0 Then

Response.Write "非法提交"

Response.end

end if

next

next

end if

on error resume next

%>

上面代码中没有看到防范Cookies注射的?前面说了,指定了接受方式就没问题了。

五、字符过滤

一般用来防止跨站,定义一个结构,将非法的字符全部替换了:

function Str( data )

Str = replace( data, "'", "''" )

Str = replace( Str, "&", "&" )

Str = replace( Str, " ", " " )

Str = replace( Str, "<", "&lt;" )

Str = replace( Str, ">", "&gt;" )

Str = replace( Str, VbCr, "<br>" )

Str = replace( Str, "'", "'" )

Str = replace( Str, CHR(34), """ )

end function

直接用str(request("*"))的方法调用过滤。

如果要还原为正常显示,代码如下:

function Str1(data)

Str1 = replace( data, "'", "''" )

Str1 = replace( Str1, "&", "&" )

Str1 = replace( Str1, " ", " " )

Str1 = replace( Str1, "&lt;", "<" )

Str1 = replace( Str1, "&gt;", ">" )

Str1 = replace( Str1, "<br>",VbCr )

Str1 = replace( Str1, "'","'" )

end function

六、数据库防下载

只要将数据库的扩展名删除,就可以做到防下载了。大家都知道IIS里有个默认文档,当用户浏览网站主页或者网站目录时,首先浏览的就是这默认文档, 一般为 index.htm、index.asp等等。如果删除了扩展名,那么直接提交数据库地址时,就会被误认为浏览目录,但这个目录并非存在,所以404错 误,返回找不到该页。举例:假设我们取数据库名为"luanx"(没有扩展名),然后通过访问地址http://**/luanx,假设默认文档最前面的 一个是index.htm,在访问时会被解析为http://**/luanx/index.htm,因为此目录不存在而找不到(测试环境是 Windows XP/2003,IIS 5.0/6.0,FAT32/NTFS的硬盘)。此方法只用于Windows 2003的服务器,XP下还是能下载,不过没几个人用XP架设服务器的。

七、暴库防范

暴库这个大家都知道,在数据库连接文件中加入一句错误处理就可以了:On Error Resume Next

八、上传漏洞防范

直接使用lcase函数,该函数从右截取指定个数的字符串,截取后进行判断。关于上传漏洞不建议过滤扩展名,而是直接判断是否为指定的扩展名,代码如下:

file=lcase(right(file.filename,4))

if file<>".gif" and file<>".jpg" then

response.write "文件格式不对" response.end

end if

九、User-agent的安全

可以直接参考http://luanx.blogbus.com/logs/30631254.html

加上这一点注意的目的是想让大家感受到任何输入、输出都不是可信任的。

十、杂七杂八

除了以上,还要注意一些问题:

1、后台路径更改。

2、密码用MD5加密。

3、数据库表段不要用一些常见的,容易被猜出来。

4、任何数据库名都要修改,特别是一些编辑器或者网上下的第三方面程序加入在自己程序中的。

5、别被社工就OK了。

关于ASP安全方法总结这么多了,以上都是ASP安全编程中的最基础,也是核心,要记住任何输出、输入的都可能是危险的,都要进行过滤,其实脚本安全搞着很有趣,欢迎大家讨论不足或者提出更多。

转自:http://www.ok22.org/art_detail.aspx?id=11

分享到:
评论

相关推荐

    收集的ASP.NET小常识

    ### ASP.NET基础知识与特点 #### ASP.NET概述 ASP.NET是由微软公司开发的一种用于构建动态Web应用程序的技术框架。它建立在Microsoft .NET Framework基础之上,并利用多种编程语言(如C#, VB.NET等)来创建高性能...

    USBASP+固件升级指南_buried6v4_arduinousbasp_AVR单片机_烧录_avr_

    但这就带来了一个问题——BootLoader的烧录(也就是引导程序的烧录)arduino的BootLoader不能使用串口烧录这是常识(我个人认为),唯一的办法就是编程器(也叫烧录器或下载器)可以将一块arduino板子制作成...

    基于asp.net的美食网站开题报告

    【基于ASP.NET的美食网站开题报告】 在信息化时代,美食网站已经成为人们日常生活的重要组成部分,为美食爱好者提供了获取信息和交流心得的平台。基于ASP.NET技术的美食网站设计与实现,旨在利用网络技术将美食文化...

    基于asp技术的系统

    普洱房地产信息网程序主要栏目功能包括房产动态、拍卖公告、普洱楼盘、出售房源、出租房源、需求房源、购房常识、家居装修、在线问答、发免费布信息等。 普洱房地产信息网更新内容: 1、修正房产信息价格和面积错误...

    深山ASP旅行社网站系统源码 v2.6.4.rar

    深山ASP旅行社网站系统采用asp access架构,主要功能模块:网站设置、新闻管理、网站公告、管理旅游景点、酒店管理、酒店介绍、旅游线路、管理旅游常识、出行指南、租车提示 美食介绍。  后台路径:/admin/index....

    asp+sqlserver2000人力资源信息管理系统

    asp+sqlserver2000人力资源信息管理系统 网站系统主要包括以下各功能模块: (1) 人事管理:主要包括人力规划、工作管理和考勤管理3个部分。 (2) 个人管理:主要包括工作管理、消息管理、信息检索和个人维护4个部分。...

    asp旅行网网站(完整版源码)

    ` 旅游须知、常识、温馨提示 同行交流!` 合作伙伴专区,门票、景点、机票等 友情连接! 网站联盟 网站导航! 网站导航图 关于我们 企业简介! 用于对旅行社的公司介绍 分支机构!多 展示公司分支结构 企业动态!多 ...

    题(1) 跳马(1) Asp.net(1) NET(1) 网页设计配色常识(1) DOM文档对象中文手册(1) Services(1)

    题(1) 跳马(1) Asp.net(1) NET(1) 网页设计配色常识(1) DOM文档对象中文手册(1) Services(1) 题(1) 跳马(1) Asp.net(1) NET(1) 网页设计配色常识(1) DOM文档对象中文手册(1) Services(1)

    ASP.NET/C#火车订票系统

    7. 旅途常识:这部分可能包含一些旅行小贴士,如行李规定、乘车须知等,为用户提供出行参考。 8. 系统简介:介绍订票系统的功能、操作流程以及开发者信息,帮助用户更好地理解和使用系统。 9. 留言板:用户可以在...

    毕业答辩-ASP基于BS结构的工厂设备管理系统的设计与开发(源代码论文).rar

    ASP.NET是一种广泛应用于Web应用程序开发的技术,由微软公司推出,主要构建在B/S(Browser/Server,浏览器/服务器)架构之上。在这个系统中,我们讨论的是一个基于ASP.NET的工厂设备管理系统,它允许用户通过浏览器...

    基于Asp.Net的健身房管理系统.zip

    基于Asp.Net Asp.Net、SQLServer 该系统的基本功能包括管理员、会员、教练三个角色功能模块。 对于管理员可以使用的功能模块主要有首页、个人中心,系统公告管理、健身常识管理,会员管理、教练管理、教练考勤管理...

    Asp.net常用代码

    asp。net常用的基本常识,知识深入挖掘,代码常用的知识,有用知识点,用时不用再去找。

    毕业论文asp.net240玉石购物网站.doc

    - 网站包含多个功能页面,如首页(index.aspx)、展示页(zhanshi.aspx)、特惠页(tehui.aspx)、常识页(changshi.aspx)等,每个页面都可通过变量参数显示不同的数据库内容。 - 特色功能如留言中心(liuyan....

    《ASP开发王》pdf格式

    《ASP开发王》下载 &lt;br&gt;包含《万维网应用程序开发纲要》,《纲要》是万维网应用程序开发所宗,是网络应用程序开发的指南针,是理论基石和实践的总结,离开《纲要》的指导,试图有效开发和维护应用程序是不可想象...

    人力资源管理系统 asp+aql

    该模块主要功能是管理保险基本常识信息、保险产品介绍信息、保险政策法规信息。  薪酬管理模块 该模块主要功能是管理员工薪酬信息。  系统设置模块 该模块主要功能是管理操作员信息、设置操作员操作权限。 操作...

    多用户商城asp+access

    基于Asp.Net+C#+Access,具有智能化、高扩展、稳定、安全等特性,并拥有超强功能,可自由添加频道,后台智能修改风格,只要懂得网站常识的站长就可以轻松利用易想多用户商城建立起专业的大型网店,让网友在其中开店...

    asp+sqlserver人力资源信息管理系统毕业设计

    (5) 保险管理:主要包括基本常识、产品介绍、政策法规、基本常识管理、产品介绍管理和政策法规管理6个部分。 (6) 薪酬管理:主要包括薪酬登记、薪酬修改个薪酬查询3个部分。 (7) 系统管理:主要包括添加用户和用户...

    睿拓旅游信息门户系统 v1.1 ASP.rar

    睿拓智能网站系统-睿拓旅游信息门户系统1.0免费版 软件大小:6M 运行环境:asp access 本版本是永州睿拓旅游信息网站管理系统包括了企业网站常用的各种功能,带完 整的后台管理系统,本程序无任何功能限制下载即可...

    基于asp.net婚庆网站含论文和源码数据库.zip

    这是一款简洁十分美观的ASP.NET+sqlserver源码,界面十分美观,功能也比较全面,比较适合 作为毕业设计、课程设计、使用,感兴趣的朋友可以下载看看哦 使用说明请关注我的csdn博客 本婚庆网站管理系统分为前台和...

    毕业设计asp.net玉石购物网站-qp源码含文档工具包

    毕业设计asp.net玉石购物网站-qp源码含文档工具包 asp.net,数据库sqlserver,开发工具用Microsoft Visual Studio ...玉的常识 留言中心 购物车 包含:源码、数据库脚本、论文、开题报告、环境工具包(在说明文档中)

Global site tag (gtag.js) - Google Analytics