《WEB应用与开发(安全).ppt》由会员分享,可在线阅读,更多相关《WEB应用与开发(安全).ppt(11页珍藏版)》请在金锄头文库上搜索。
1、WEB应用与开发应用与开发常见的安全缺陷及解决办法常见的安全缺陷及解决办法 余德贵数据库(D)WEB SERRVER(S)浏览器(B)ASP responseASP request1、web应用程序的结构和安全(ASP) n n可能出现的安全问题:(1 1)服务端:操作系统、Web网站访问安全(TCP/IP 端口)、应用程序(ASP/执行文件的运行等)、数据库安全(如数据的合法性)(2)客户端:访问Web网站资源时出现的安全,如脚本安全,执行文件(exe、bat)的下载和运行(3)传输:数据被拦截、侦听、数据包解密等。(2)客户端(1)服务端(3)传输2、web应用程序安全(应用程序安全(AS
2、P) n n安全表征:(1 1)服务端:数据库丢失、数据失窃和修改、据库服务停止、 Web网站瘫痪或页面被修改(盗连接)、操作系统崩溃等安全缺陷:操作系统、数据服务和web应用程序本身的缺陷(2)客户端:浏览器、操作系统设置被恶意修改、数据失窃和修改、操作系统崩溃等 安全缺陷:操作系统本身的缺陷、保护意识和非法使用计算机软件2、web应用程序安全应用程序安全n n攻击、侵入网站、病毒(木马设计)的目的:攻击、侵入网站、病毒(木马设计)的目的:(1 1)表现自己的计算机水平(好奇)(2)窃取数据机密(如情报)(3)商业目的,如计算机病毒的生产与某些杀毒软件公司有密切联系(4)保护自己程序代码。故
3、意攻击、侵入网站、病毒(木马)设计和传播是犯罪行为!故意攻击、侵入网站、病毒(木马)设计和传播是犯罪行为!用用autorun.inf文件传播我木马或病文件传播我木马或病毒毒 n n最近出现了用最近出现了用autorun.infautorun.inf文件传播我木马或病毒,它通过使用者的误操作让目文件传播我木马或病毒,它通过使用者的误操作让目标程序执行,达到侵入电脑的目的,标程序执行,达到侵入电脑的目的,autorun.infautorun.inf常用于对文件的安装等操作,常用于对文件的安装等操作,是为了方便使用者运行程序。但因为有木马和病毒通过它传播所以它带来了是为了方便使用者运行程序。但因为有
4、木马和病毒通过它传播所以它带来了很大的负面影响很大的负面影响 。n n利用利用TCP/IPTCP/IP协议设计的协议设计的NethackerNethacker 等黑客软件可以穿过等黑客软件可以穿过InternetInternet网络,找到共网络,找到共享的主机,然后进行相应操作。所以当您通过享的主机,然后进行相应操作。所以当您通过ModemModem上网时,千万要小心,上网时,千万要小心,因为一不小心,您的主机将完全共享给对方了。防范这类事情发生的方法无因为一不小心,您的主机将完全共享给对方了。防范这类事情发生的方法无非是经常检查系统,给系统打上补丁,经常使用反黑杀毒软件,上网时打开非是经常检
5、查系统,给系统打上补丁,经常使用反黑杀毒软件,上网时打开防火墙,注意异常现象,留意防火墙,注意异常现象,留意AutoRun.infAutoRun.inf文件的内容,关闭共享或不要设置文件的内容,关闭共享或不要设置为完全共享,且加上复杂的共享密码。为完全共享,且加上复杂的共享密码。 操作系统、数据服务和操作系统、数据服务和webweb应用程序本身的缺应用程序本身的缺陷陷攻击、侵入网站攻击、侵入网站n nWindows 的某些服务程序,Tcp/ip 数据共享n nSQL Server 的sql语句(数据库注入)n nASP程序代码执行安全web应用程序开发安全职责应用程序开发安全职责n n 保证应
6、用程序的安全应当从编写第一行代码的时候开始做起,原因很简单,保证应用程序的安全应当从编写第一行代码的时候开始做起,原因很简单,保证应用程序的安全应当从编写第一行代码的时候开始做起,原因很简单,保证应用程序的安全应当从编写第一行代码的时候开始做起,原因很简单,随着应用规模的发展,修补安全随着应用规模的发展,修补安全随着应用规模的发展,修补安全随着应用规模的发展,修补安全漏洞漏洞漏洞漏洞所需的代价也随之快速增长。根据所需的代价也随之快速增长。根据所需的代价也随之快速增长。根据所需的代价也随之快速增长。根据IBMIBMIBMIBM的的的的系统科学协会(系统科学协会(系统科学协会(系统科学协会(Sys
7、tems Sciences InstituteSystems Sciences InstituteSystems Sciences InstituteSystems Sciences Institute)的研究,如果等到软件部署)的研究,如果等到软件部署)的研究,如果等到软件部署)的研究,如果等到软件部署之后再来修补缺陷,其代价相当于开发期间检测和消除缺陷的之后再来修补缺陷,其代价相当于开发期间检测和消除缺陷的之后再来修补缺陷,其代价相当于开发期间检测和消除缺陷的之后再来修补缺陷,其代价相当于开发期间检测和消除缺陷的15151515倍。倍。倍。倍。 为了用最小的代价保障应用程序的安全,在代码本
8、身的安全性、抗御攻为了用最小的代价保障应用程序的安全,在代码本身的安全性、抗御攻为了用最小的代价保障应用程序的安全,在代码本身的安全性、抗御攻为了用最小的代价保障应用程序的安全,在代码本身的安全性、抗御攻击的能力等方面,开发者应当担负更多的责任。然而,要从开发的最初阶段击的能力等方面,开发者应当担负更多的责任。然而,要从开发的最初阶段击的能力等方面,开发者应当担负更多的责任。然而,要从开发的最初阶段击的能力等方面,开发者应当担负更多的责任。然而,要从开发的最初阶段保障程序的安全性,必须具有相应的技能和工具,而真正掌握这些技能和工保障程序的安全性,必须具有相应的技能和工具,而真正掌握这些技能和工
9、保障程序的安全性,必须具有相应的技能和工具,而真正掌握这些技能和工保障程序的安全性,必须具有相应的技能和工具,而真正掌握这些技能和工具的开发者并不是很多。虽然学写安全的代码是一个复杂的过程,最好在大具的开发者并不是很多。虽然学写安全的代码是一个复杂的过程,最好在大具的开发者并不是很多。虽然学写安全的代码是一个复杂的过程,最好在大具的开发者并不是很多。虽然学写安全的代码是一个复杂的过程,最好在大学、内部培训会、行业会议上完成,但只要掌握了下面五种常见的学、内部培训会、行业会议上完成,但只要掌握了下面五种常见的学、内部培训会、行业会议上完成,但只要掌握了下面五种常见的学、内部培训会、行业会议上完成
10、,但只要掌握了下面五种常见的ASP.NETASP.NETASP.NETASP.NET应应应应用安全缺陷以及推荐的修正方案,就能够领先一步,将不可或缺的安全因素用安全缺陷以及推荐的修正方案,就能够领先一步,将不可或缺的安全因素用安全缺陷以及推荐的修正方案,就能够领先一步,将不可或缺的安全因素用安全缺陷以及推荐的修正方案,就能够领先一步,将不可或缺的安全因素融入到应用的出生之时。融入到应用的出生之时。融入到应用的出生之时。融入到应用的出生之时。 n n一、不能盲目相信用户输入一、不能盲目相信用户输入 在在WebWeb应用开发中,开发者最大的失误往往是无条件地信任用户输入,应用开发中,开发者最大的失
11、误往往是无条件地信任用户输入,假定用户(即使是恶意用户)总是受到浏览器的限制,总是通过浏览器和服假定用户(即使是恶意用户)总是受到浏览器的限制,总是通过浏览器和服务器交互,从而打开了攻击务器交互,从而打开了攻击WebWeb应用的大门。实际上,黑客们攻击和操作应用的大门。实际上,黑客们攻击和操作WebWeb网站的工具很多,根本不必局限于浏览器,从最低级的字符模式的原始界面网站的工具很多,根本不必局限于浏览器,从最低级的字符模式的原始界面(例如(例如telnettelnet),到),到CGICGI脚本扫描器、脚本扫描器、WebWeb代理、代理、WebWeb应用扫描器,恶意用户可应用扫描器,恶意用户
12、可能采用的攻击模式和手段很多。能采用的攻击模式和手段很多。处理办法:用客户处理办法:用客户/ /服务端基本数据验证:服务端基本数据验证: 始终对所有的用户输入执行验证,且验证必须在一个可靠的平台上进始终对所有的用户输入执行验证,且验证必须在一个可靠的平台上进行,应当在应用的多个层上进行。行,应当在应用的多个层上进行。 除了输入、输出功能必需的数据之外,不要允许其他任何内容。除了输入、输出功能必需的数据之外,不要允许其他任何内容。 设立设立“信任代码基地信任代码基地”,允许数据进入信任环境之前执行彻底的验证。,允许数据进入信任环境之前执行彻底的验证。 登录数据之前先检查数据类型。登录数据之前先检
13、查数据类型。 详尽地定义每一种数据格式,例如缓冲区长度、整数类型等。详尽地定义每一种数据格式,例如缓冲区长度、整数类型等。 严格定义合法的用户请求,拒绝所有其他请求。严格定义合法的用户请求,拒绝所有其他请求。 测试数据是否满足合法的条件,而不是测试不合法的条件。这是因为测试数据是否满足合法的条件,而不是测试不合法的条件。这是因为数据不合法的情况很多,难以详尽列举。数据不合法的情况很多,难以详尽列举。 3、web应用程序开发安全措施(ASP) n n二、二、sqlsql server server 数据防止注入数据防止注入 攻击者可以在输入域中插入特殊字符,改变攻击者可以在输入域中插入特殊字符,
14、改变SQLSQL查询的本意,欺查询的本意,欺骗数据库服务器执行恶意的查询恶意查询,有可能获取后端数据库保骗数据库服务器执行恶意的查询恶意查询,有可能获取后端数据库保存的任何信息,例如客户信用卡号码的清单甚至进入操作系统。存的任何信息,例如客户信用卡号码的清单甚至进入操作系统。n n SqlSql注入式攻击是指利用设计上的漏洞,在目标服务器上运行注入式攻击是指利用设计上的漏洞,在目标服务器上运行SqlSql 命令以及进行其他方式的攻击命令以及进行其他方式的攻击 动态生成动态生成SqlSql命令时没有对用户输入的命令时没有对用户输入的数据进行验证是数据进行验证是SqlSql注入攻击得逞的主要原因:
15、注入攻击得逞的主要原因:n n%username=End if%n nPassword=“123456 or 2=2 ”Password=“123456 or 2=2 ” Password=“123456 delete Password=“123456 delete from user from user ” ” 3、web应用程序开发安全措施(ASP) n n二、二、sqlsql server server 数据防止注入数据防止注入 运行运行dosdos命令命令 net user net user xp_cmdshellxp_cmdshell add exec add exec master
16、.dbo.xp_cmdshellmaster.dbo.xp_cmdshell net net localgrouplocalgroup administrators administratorsn nEXEC EXEC master.dbo.xp_cmdshellmaster.dbo.xp_cmdshell net user net user aaaaaa 123456/add 123456/addn nEXEC EXEC master.dbo.xp_cmdshellmaster.dbo.xp_cmdshell net user net user aaaaaa 123456/add 12345
17、6/add n nEXEC EXEC master.dbo.xp_cmdshellmaster.dbo.xp_cmdshell net net localgrouplocalgroup Administrators Administrators aaaaaa /add/addn nEXEC EXEC master.dbo.xp_cmdshellmaster.dbo.xp_cmdshell net net localgrouplocalgroup COMPUTERRemote Desktop COMPUTERRemote Desktop Users Users aaaaaa /add/addn
18、n处理办法:处理办法:n n最小权限原则。特别是不要用最小权限原则。特别是不要用dbodbo或者或者sasa账户,为不同的类型的动作或者账户,为不同的类型的动作或者组建使用不同的账户,最小权限原则适用于所有与安全有关的场合组建使用不同的账户,最小权限原则适用于所有与安全有关的场合n n对用户输入进行检查。对一些特殊字符,比如单引号,双引号,分号,逗对用户输入进行检查。对一些特殊字符,比如单引号,双引号,分号,逗号,冒号,连接号等进行转换或者过滤;使用强数据类型,比如你需要用号,冒号,连接号等进行转换或者过滤;使用强数据类型,比如你需要用户输入一个整数,就要把用户输入的数据转换成整数形式;限制用
19、户输入户输入一个整数,就要把用户输入的数据转换成整数形式;限制用户输入的长度等等。这些检查要放在的长度等等。这些检查要放在serverserver运行,运行,clientclient提交的任何东西都是不可提交的任何东西都是不可信的信的n n使用存储过程,如果一定要使用使用存储过程,如果一定要使用sqsq语句,那么用标准的方式组建语句,那么用标准的方式组建sqlsql语句,语句,比如可以利用比如可以利用parametersparameters对象,避免用字符串直接拼对象,避免用字符串直接拼sqsq命令。命令。n n当当sqlsql运行出错时,不要把数据库返回的错误信息全部显示给用户,错误运行出错时,不要把数据库返回的错误信息全部显示给用户,错误信息经常会透露一些数据库设计的细节信息经常会透露一些数据库设计的细节n n针对常用的针对常用的sqlsql注入式攻击方式对症下药注入式攻击方式对症下药3、web应用程序开发安全措施(ASP) n n三、其他安全三、其他安全 (1 1)上传文件:)上传文件:.asp .exe .doc .asp .exe .doc 安全检测安全检测(2 2)客户端代码安全。)客户端代码安全。参考资料:参考资料:百度搜索:关键词百度搜索:关键词 网络安全网络安全 、aspasp安全安全 sqlsql 注入注入3、web应用程序开发安全措施(ASP)