web常见攻击方式

funcups 贡献于2017-02-15

作者 user  创建于2015-10-19 02:39:00   修改者user  修改于2015-10-23 02:10:00字数2723

文档摘要:
关键词:

WEB常见攻击方式 一、SQL注入 通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。 eg: SQL数据库的密码查询是以下语句: SELECT * FROM users WHERE 'username' = '$USER' AND 'password'='$PASS'; 当用户输入用户名test和密码123时 SELECT * FROM users WHERE 'username' = 'test' AND 'password'='123'; 当用户输入test和456’ OR 1=1-- SELECT * FROM users WHERE 'username' = 'test' AND 'password'='456’ OR 1=1--'; 防御: 1、替换所有的单引号,把所有单独出现的单引号都改为两个单引号; 2、删除用户输入内容中的所有连字符,防止攻击者构造出类如“SELECT * from Users WHERE login = 'mas' -- AND password =''”之类的查询,因为这类查询的后半部分已经被注释掉,不再有效,攻击者只要知道一个合法的用户登录名称,根本不需要知道用户的密码就可以顺利获得访问权限; 3、对于用来执行查询的数据库账户,限制其权限,用不同的用户帐户执行查询、插入、更新、删除操作。由于隔离了不同帐户可执行的操作,因而也就防止了原本用于执行SELECT命令的地方却被用于执行INSERT、UPDATE或DELETE命令; 4、用存储过程来执行。SQL参数的传递方式将防止攻击者利用单引号和连字符实施攻击。此外,它还使得数据库权限可以限制到只允许特定的存储过程执行,所有的用户输入必须遵从被调用的存储过程的安全上下文,这样就很难再发生注入式攻击了; 5、限制表单或查询字符串输入的长度;增加攻击者在sql语句中加入有害代码的难度; 6、检查用户输入的合法性;在客户端,攻击者完全有可能获得网页的源代码,修改验证合法性的脚本(或者直接删除脚本),然后将非法内容通过修改后的表单提交给服务器。因此,要保证验证操作确实已经执行,唯一的办法就是在服务器端也执行验证。你可以使用许多内建的验证对象,例如RegularExpressionValidator,它们能够自动生成验证用的客户端脚本,当然你也可以插入服务器端的方法调用。如果找不到现成的验证对象,你可以通过CustomValidator自己创建一个。 7、将用户登录名称、密码等数据加密保存;加密用户输入的数据,然后再将它与数据库中保存的数据比较,这相当于对用户输入的数据进行了“消毒”处理,用户输入的数据不再对数据库有任何特殊的意义,从而也就防止了攻击者注入SQL命令。System.Web.Security.FormsAuthentication类有一个HashPasswordForStoringInConfigFile,非常适合于对输入数据进行消毒处理。 8、检查提取数据的查询所返回的记录数量。如果程序只要求返回一个记录,但实际返回的记录却超过一行,那就当作出错处理。 9、使用预编译语句 二、跨站脚本攻击(XSS) 利用网站漏洞恶意盗取信息。 第一种类型:反射型XSS 黑客诱使用户点击一个恶意链接; 第二种类型:存储型XSS 存储型xss会将用户输入的数据存储在服务器端; 例如:用户一篇包含恶意代码的文章发表后,所有访问该文章的用户都会中招; 第三种类型:DOM Based XSS 反射型xss的另一种; 防御: 1、用户提交表单时,要求用户输入验证码,那么一般的XSS Payload都会失效;修改密码是,要求用户输入旧密码; 2、针对XSS worm 蠕虫,网站过滤些危险的标签;利用xss worm攻击也是需要一定条件的,站内信、用户留言等页面,是xss worm的高发区,缺乏用户间互动的功能,就算有xss,也难以被用于xss worm传播; 3、网站应用使用的是flash情况 正确的配置flash的参数,allowScriptAccess,这个参数定义了Flash能否与html页面进行通信,一般推荐设置魏never,如果设置魏sameDomain,务必确保flash文件不是用户传上来的; 出来allowScriptAccess外,还有allowNetworking,控制flash与外部网络通信,一般建议设置魏none或者internal,设置魏all可能带来安全问题; 4、HttpOnly 不同的语言给Cookie添加相应的HttpOnly代码; 5、输入检查 对各种输入最好都进行格式检查,让一些特殊字符的攻击失效,智能点的检查还会匹配xss特征,比如检查用户数据中是否包含了