如何做到asp程序安全 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【meiwen.anslib.com - 电脑资料】

    文章作者:jshell

    asp作为一种强大的语言 流行了N年 但是由于asp语言自身的缺陷

    程序员写出来的程序往往漏洞重重 asp漏洞 一般情况下 都是注入 上传

    再者就是任意文件下载 (一般出现在下载程序中) 或者一些古典的漏洞

    如 %5c爆库 等等 对于爆库漏洞 一句话就可以解决 on error resume next

    在建立数据库连接对象前加入 如任意文件下载漏洞 一般是对路径变量的值没有做

    好过滤 其实replace函数是很强大的 仔细想下就知道该怎么去做

    注入方面 无非是对变量的值做好检查工作 这里提供一个函数 我是从laoy系统中

    看到的 还是使用replace函数 依次替换不安全字符 达到防注的效果 代码如下:

    <%

    function Checkall(str)

    Checkall=replace(replace(replace(replace(str,"<","<"),">",">"),chr(13),"
")," ","")

    CheckStr=replace(replace(replace(replace(Checkall,"'",""),"and",""),"insert",""),"set","")

    Checkall=replace(replace(replace(replace(Checkall,"select",""),"update",""),"delete",""),chr(34),""")

    Checkall=replace(replace(replace(replace(replace(Checkall,"*",""),"=",""),"or",""),"mid",""),"count","")

    end function

    %>

    把这段代码 写到function.asp里 当有变量接收时用这个函数过滤下就可以了

    比如 id=request.querystring("id") 我们可以写成 id=checkall(request.querystring("id"))

    再者就是程序作者的代码严谨性问题 举个例子 我们以 post方式接收一个变量值 很多人会

    这么写 id=request("id") 其实这样写没有错误 但是 在安全性上就欠缺了 拿上上年兴起的

    cookie注入来说 我们知道 request对象从几个集合取数据是有顺序的 从前往后依次是

    get post cookie 如果 get为空 post也为空 那么 就会从cookie中取值 然后进入数据库查询

    假如 你的防注程序没有对cookie的值进行检查 那么恭喜你 cookie注入漏洞产生了 再者就是

    不写获取变量值的方式 程序的速度也会略有缓慢 对于上传 我不多说 因为我对上传并不了解

    但是有个经验 就是 遇到上传的地方 我就使用著名程序的上传模块 那是很安全的

最新文章