??(1)表单提交,主要是POST请求,也包括GET请求;
??(2)URL参数提交,主要为GET请求参数;
??(3)Cookie参数提交;
??(4)HTTP请求头部的一些可修改的值,比如Referer、User_Agent等;
??(5)一些边缘的输入点,比如.mp3文件的一些文件信息等。
??SQL注入的危害不仅体现在数据库层面上,还有可能危及承载数据库的操作系统;如果SQL注入被用来挂马,还可能用来传播恶意软件等,这些危害包括但不局限于:
??(1)数据库信息泄漏:数据库中存放的用户的隐私信息的泄露。作为数据的存储中心,数据库里往往保存着各类的隐私信息,SQL注入攻击能导致这些隐私信息透明于攻击者。
??(2)网页篡改:通过操作数据库对特定网页进行篡改。
??(3)网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。
??(4)数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被篡改。
??解决SQL注入问题的关键是对所有可能来自用户输入的数据进行严格的检查、对数据库配置使用最小权限原则。通常使用的方案有:
??(1)所有的查询语句都使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。当前几乎所有的数据库系统都提供了参数化SQL语句执行接口,使用此接口可以非常有效的防止SQL注入攻击。
??(2)对进入数据库的特殊字符('"\<>&*;等)进行转义处理,或编码转换。
??(3)确认每种数据的类型,比如数字型的数据就必须是数字,数据库中的存储字段必须对应为int型。
??(4)数据长度应该严格规定,能在一定程度上防止比较长的SQL注入语句无法正确执行。
??(5)网站每个数据层的编码统一,建议全部使用UTF-8编码,上下层编码不一致有可能导致一些过滤模型被绕过。
??(6)严格限制网站用户的数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害。
??(7)避免网站显示SQL错误信息,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判断。
??(8)在网站发布之前建议使用一些专业的SQL注入检测工具进行检测,及时修补这些SQL注入漏洞。
??XSS类型包括:
??(1)非持久型跨站:即反射型跨站脚本漏洞,是目前最普遍的跨站类型。跨站代码一般存在于链接中,请求这样的链接时,跨站代码经过服务端反射回来,这类跨站的代码不存储到服务端(比如数据库中)。上面章节所举的例子就是这类情况。
??(3)DOM跨站(DOMXSS):是一种发生在客户端DOM(DocumentObjectModel文档对象模型)中的跨站漏洞,很大原因是因为客户端脚本处理逻辑导致的安全问题。
??XSS的危害包括:
??(2)网站挂马:跨站时利用IFrame嵌入隐藏的恶意网站或者将被攻击者定向到恶意网站上,或者弹出恶意网站窗口等方式都可以进行挂马攻击。
??(3)身份盗用:Cookie是用户对于特定网站的身份验证标志,XSS可以盗取到用户的Cookie,从而利用该Cookie盗取用户对该网站的操作权限。如果一个网站管理员用户Cookie被窃取,将会对网站引发巨大的危害。
??(4)盗取网站用户信息:当能够窃取到用户Cookie从而获取到用户身份使,攻击者可以获取到用户对网站的操作权限,从而查看用户隐私信息。
??(5)垃圾信息发送:比如在SNS社区中,利用XSS漏洞借用被攻击者的身份发送大量的垃圾信息给特定的目标群。
??(6)劫持用户Web行为:一些高级的XSS攻击甚至可以劫持用户的Web行为,监视用户的浏览历史,发送与接收的数据等等。
??常用的防止XSS技术包括:
??(1)与SQL注入防护的建议一样,假定所有输入都是可疑的,必须对所有输入中的script、iframe等字样进行严格的检查。这里的输入不仅仅是用户可以直接交互的输入接口,也包括HTTP请求中的Cookie中的变量,HTTP请求头部中的变量等。
??(2)不仅要验证数据的类型,还要验证其格式、长度、范围和内容。
??(3)不要仅仅在客户端做数据的验证与过滤,关键的过滤步骤在服务端进行。
??(4)对输出的数据也要检查,数据库里的值有可能会在一个大网站的多处都有输出,即使在输入做了编码等操作,在各处的输出点时也要进行安全检查。
??(5)在发布应用程序之前测试所有已知的威胁。
??三、弱口令漏洞
??(1)不使用空口令或系统缺省的口令,这些口令众所周之,为典型的弱口令。
??(2)口令长度不小于8个字符。
??(3)口令不应该为连续的某个字符(例如:AAAAAAAA)或重复某些字符的组合(例如:tzf.tzf.)。
??(4)口令应该为以下四类字符的组合,大写字母(A-Z)、小写字母(a-z)、数字(0-9)和特殊字符。每类字符至少包含一个。如果某类字符只包含一个,那么该字符不应为首字符或尾字符。
??(6)口令不应该为用数字或符号代替某些字母的单词。
??(7)口令应该易记且可以快速输入,防止他人从你身后很容易看到你的输入。
??(8)至少90天内更换一次口令,防止未被发现的入侵者继续使用该口令。
??四、HTTP报头追踪漏洞
??六、框架钓鱼漏洞(框架注入漏洞)
??七、文件上传漏洞
??八、应用程序测试脚本泄露
??由于测试脚本对提交的参数数据缺少充分过滤,远程攻击者可以利用洞以WEB进程权限在系统上查看任意文件内容。防御此类漏洞通常需严格过滤提交的数据,有效检测攻击。
??九、私有IP地址泄露漏洞
??由于Web配置不安全,登陆请求把诸如用户名和密码等敏感字段未加密进行传输,攻击者可以窃听网络以劫获这些敏感信息。建议进行例如SSH等的加密后再传输。
??十一、敏感信息泄露漏洞
??SQL注入、XSS、目录遍历、弱口令等均可导致敏感信息泄露,攻击者可以通过漏洞获得敏感信息。针对不同成因,防御方式不同。