如何处理在 ASP 中出现的安全问题
发布时间:2023-11-18 11:48:17 所属栏目:Asp教程 来源:
导读:浅谈ASP的安全问题
先说句牢骚话,我经常看到有人说ASP不安全,比如容易被注入,这种说法我一直感到无法理解。如果你水平不高,那么你用php用ASP.net用JSP都有被注入的可能,这关ASP什么事?ASP只是一种技术,用它
先说句牢骚话,我经常看到有人说ASP不安全,比如容易被注入,这种说法我一直感到无法理解。如果你水平不高,那么你用php用ASP.net用JSP都有被注入的可能,这关ASP什么事?ASP只是一种技术,用它
浅谈ASP的安全问题 先说句牢骚话,我经常看到有人说ASP不安全,比如容易被注入,这种说法我一直感到无法理解。如果你水平不高,那么你用php用ASP.net用JSP都有被注入的可能,这关ASP什么事?ASP只是一种技术,用它开发的网站是否安全,只跟程序员和服务器管理员的水平有关系,任何技术开发的网站都一样。只要你的程序有漏洞,而且你用的数据库支持标准SQL语法,或者注入者会这种语法,那么就存在被注入的可能。 闲话少说,我今天结合我个人的经验来简单说说ASP中常见的安全问题。 一,注入。无论什么时候讲到网站的安全问题,SQL注入都是首当其冲的。我们先来看看SQL注入是怎么回事。简单的说,SQL注入就是通过各种方式传递非法的参数,其方式和目的无法是以下几种: ·期望程序出错,从而从服务器返回的错误信息中获得一些注入者想要的东西,这种方法常用来判断数据库的类型。 ·执行特殊语句,用来猜解表名等。 ·构造特殊语句,这个常常就是用来绕过登录检测取得管理权限的。 针对以上问题,我一般采用以下的应对方法: ·前面两种情况应该一起考虑。无论是哪种注入方式,其实都是通过构造非法的参数来实现的,那么我们就通过程序来限制参数,给合法的参数制定一个规则,不符合这个规则的就是非法的。但在检测时经常见出现下面的错误: 1,用isnumeric函数来检测id。这个函数仅仅是判断是否是数字,仅此而已,那么如果我这样输入一个url:shownews.asp?id=1.1,那么也会通过检测,因为1.1也是数字,或者id=0也行。有这样的id吗?没有,任何数据库表中的id都是从1开始的正整数。所以请大家不要这样再使用它来检测id的合法性。那用什么呢?这里就要用到正则表达式了。 可以通过id=cint(request("id"))或clng,或者就是用正则表达式替换所有的非数字字符,这样就只有数字了。 2,缺少错误处理,或错误处理不完善。比如rs.eof的情况,不加处理的话,我写个id=999999999999999,那么程序就会出错,我相信绝少有哪个网站有如此大的id,即使有我还可以换个更大的。我曾经就遇到过有人用工具连续试探我的id,从8000测试到10000多。还有就是type参数,一般网站的新闻都会分好几个栏目,这时都依靠type来确定每个列表页面该显示哪个栏目的内容,如果有人提交一个不存在的type值呢?这也需要处理,select case中的case else子句就是为这种意外情况准备的,别为了省事不去用它。 ·绕过登录检测的问题大多数是因为程序员把登录检测语句写成这样: 复制代码 代码如下: Sql="Select count(*) from Admin Where UserName='"&UserName&"' and Pwd='"&Pwd&"'" (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐