王晓哲
(天津机电职业技术学院,天津 300131)
NTFS权限有别于以前的sys32权限。它比sys32权限更严格,配置更详细。你可以对单独的文件和目录使用NTFS访问权限。这样我们就可以对asp所在目录以及里面的文件加以保护。NTFS权限是www服务器安全性的基础,它是基于网络系统的。以前的sys32权限是基于单机文件系统。NTFS权限定义了一个或一个用户组访问文件系统和目录的不同级别。当一个拥有web服务器有效帐号用户访问一个有权限限制的文件时,计算机首先检索文件的访问控制列表 。该列表声明了不同用户和用户组所被受予的权限和访问级别。如果该用户具有打开文件的权限,那么计算机就允许该用户访问文件,但其他操作是不允许的,例如修改。
Global.asa文件是asp网站运行就立即启动的全局文件。为了充分保护ASP应用程序,要把应用程序里面的Global.asa文件上为适当的用户或组设置NTFS文件权限,因为整个网站的配置全在此,所以非常重要。如果Global.asa里面有向浏览器返回信息的命令而你没有保护,则信息将有可能被重定向返回给任意主机,即便此应用程序的其他文件被保护,这种问题也会发生。这就是我们经常所说的重定向安全。所以一定要对应用程序里面的所有文件实行统一的NTFS权限控制。
就目前的操作系统而言,他们的web服务器提供了非常全面的安全性配置。可以通过配置Web服务器的权限来限制用户查看、运行和操作的ASP文件。他的权限配置不同于NTFS权限提供的对特定用户对应用程序文件和目录的访问方式,Web服务器权限对所有用户有效,并且不区分用户级别和类型。在这一点上,他们的角度是不一样的。对于要运行ASP应用程序的用户,在配置Web服务器权限时,要遵循下列原则:对包含asp文件的虚拟目录不允许“读”或“脚本运行”权限;对asp文件和其他包含脚本的文件所在的虚目录不允许“读”或“脚本运行”权限。
应用程序的脚本映射文件保证了用户在浏览网页时不会意外地下载asp文件的源代码。例如,即使你为含有某个asp文件的目录设置了“读”权限,只要该asp文件映射于某个脚本的应用程序,那么你的Web服务器也不会将该文件的源代码返回给用户,浏览器只会报404错误(文件无法找到)。
Cookie是一种存放于你的本地机中含有上网信息的文本文件,包括用户名和密码等。ASP使用SessionID(会话号码)cookie跟踪对应用程序访问期间特定的 Web浏览器的信息。这就是说,带有相同的cookie的HTTP请求被认为是来自同一客户端。Web服务器可以使用SessionID判断某个特定用户会话信息。
⑴SessionID能否被黑客猜中
为了防止计算机黑客猜中SessionID并获得对合法用户的会话变量的访问,Web服务器为每个SessionID指派一个随机生成号码(此号码算法难度并不是很强)。每当用户的Web浏览器返回一个Session-ID时,服务器取出SessionID,接着检查是否和服务器上的生成号码一致。若两个id号一致,它将认为是同一用户,将允许当前用户访问前一用户的所有会话变量。这一技术的安全性在于数字的长度(64位),此长度越长那么就使计算机黑客猜中SessionID概率就越低。
⑵ 加密重要的SessionID Cookie
截获了用户sessionID的计算机黑客可以使用此cookie来假冒该用户。如果ASP应用程序包含私人信息,信用卡或银行帐户,因为这些信息在cookie文件中都可明文显示。拥有窃取的cookie的计算机黑客就可以使用,使用户受到极大损失。你可以通过对Web服务器和用户的浏览器之间的通讯链路加密来防止SessionIDcookie被截获。
用户在浏览网页过程中,有时会因为某种情况长时间离开计算机处理别的事情,而忘记关掉网页。这样会给别人有可乘之机,所以应该给重要网页一个过期时间。它不仅保证了用户的安全,也可以减少服务器的链接次数,减少服务器压力。可以使用session.timeout=时间,过了一定时间网页就失效了,如想使用,须再次登陆。
在Ie浏览器的工具选项中可以找到此项。SSL协议作为Web服务器安全选项,提供了一种虚拟方式来建立与用户的加密通讯连接。SSL保证了Web站点内容的验证,并能确认访问被限制的Web站点的用户身份。
⑴通过SSL可以被限制的程序
通过SSL,你可以要求访问被限制的ASP站点用户与你的服务器建立一个加密连接;以防用户与站点间交换的数据被截取。
⑵维护文件的安全
如果你从没有得到保护的虚拟目录中的asp文件,则SSL将不被应用于被包含文件。因此,为了保证使用SSL,应确保包含的文件启用了SSL。
⑶客户资格认证
控制对你的ASP应用程序访问的一种十分安全的方法就是要求用户使用客户资格登录。客户资格是包含最终用户身份信息的数字身份证。如我们进行买卖交易时,需要有网银。用户通常从委托的第三方组织获得客户资格,第三方组织在发放资格证之前确认用户的身份。每当用户登录到需要资格验证的站点时,用户的Web浏览器会先自动向服务器发送用户资格。如果和Web服务器资格对比正确,那么服务器就可以许可用户对ASP应用程序访问。
应用程序常常具有在事务内部运行的脚本和组件。事务是一组在服务器内部连续的,不可中断的操作,即使该操作包括很多步骤,也只能整体返回操作成功或失败。用户可以创建在事务内部运行的ASP脚本,如果脚本的任何一部分失败,整个事务都将会终止,这样就提高了某一种操作的安全性。
由于Access数据库加密机制过于简单,很容易破解。有效地防止数据库被下载和破解,就成了提高ASP+Access安全性的重中之重。以下两种方法简单、有效。
⑴非常规命名。为Access数据库文件起一个复杂的名字,并把它放在几层目录下。例如,对于某个购物站点的数据库,最好不把它命名为“shop.mdb”或“shopping.mdb”,而是起个非常规的名字,例如:faq9j345l.mdb,当然你自己要记得住。再把它放在如./akkt/kwer/acd/aved5的几层目录下,这样黑客想通过猜的方式得到Access数据库文件名就很难了。
⑵使用ODBC数据源。在ASP程序设计中,如果在不太严格的条件下,为了安全,尽量使用ODBC数据源,不把数据库名写在程序中,当然这种方法对计算机具有依赖性。例如:
可见,数据库名字起得再怪异,隐藏的再深,当ASP源代码失密后,对方也是看得见的,很容易被下载下来。如果使用ODBC,这样的问题就都隐藏了:
conn.open“ODBC-DSN名”
你可以要求每个希望访问被限制的ASP内容的用户必须拥有有效的Windows帐号和密码。每当用户试图访问被限制的内容时,在操作系统这一层面就被阻拦,Web服务器进行身份验证,即确认用户身份的有效性。Web服务器支持以下几种身份验证方式:
⑴基本身份验证 提示用户输入用户名和密码
Windows身份验证 从用户的Web浏览器通过加密方式获取用户身份信息。Web服务器仅当禁止匿名访问或Windows文件系统限制匿名访问时才验证用户身份。
⑵保护原数据库
访问原数据库的ASP脚本需要Web服务器计算机的管理员权限。在从远程计算机上运行这些脚本时,须经已通过的身份验证,如使用 Windows请求/响应验证方式进行连接。应该为管理asp应用创建一个服务器或目录并将其目录安全验证方式设置为 Windows请求/响应式身份验证。目前,仅 Microsoft Internet Explorer version 6.0或 更高版本支持 Windows请求/响应式身份验证。
页面缓冲可以加快网站的浏览速度,但由于页面在计算机内存中的停留给非法用户提供了越权浏览的机会。因此,重要的Web页面必须禁止页面缓存,强制浏览器每次都要向Web服务器请求新页面。利用Asp的Response对象的Expires属性和Clear方法可解决此问题。具体设置:Response.expires=0 Rsponse.clear,expires表示缓存页面的有效期,0表示立即过期,clear表示清空缓冲区。
在使用ASP开发网页时要注意以下事项:
(1)不要相信用户的输入具有合适的大小或者包含适当的字符,因为他们可任意输入。要对用户输入进行验证。最好的办法是创建一个activeX组件,您可以从ASP页面中调用该组件来验证用户输入。也可以使用Server.HTMLEncode和Server.URLEncode这两个方法的某一个。
(2)不要通过连接用户输入的字符串来创建ASP页中的数据库连接字符串。恶意用户可以在他们的输入中插入一些代码而获取该数据库的访问权限。这就是sql攻击漏洞。如果你使用的是SQL数据库,那么请使用存储过程创建数据库连接。
(3)不要使用默认的SQL管理员帐户sa。每个使用SQL的用户都知道有sa帐户。创建具有复杂密码的其他SQL管理帐户,并删除sa帐户。
(4)存储客户端用户密码之前,请对这些密码使用哈希算法加密,进行base64编码,或者使用Server.HTMLEncode或Server.URLEncode进行编码。
(5)不要将安全数据存储在Cookie中或者将输入字段隐藏在网页中。
[1]白艳玲.ASP安全问题及解决方案[J].郑州铁路职业技术学院学报,2006,(04).
[2]王艳红.ASP安全技术研究[J].北京电子科技学院学报,2004,(04).
[3]黄鑫源.浅谈 ASP的安全漏洞与应对策略[J].电脑知识与技术,2011,(11).