常见的web漏洞有哪些?
比较常见的 web 漏洞有:SQL注入、XSS跨站站点脚本、CSRF跨站请求伪造等。由于所在团队或者公司均有严格隔离的内网环境和基础运维团队,对弱口令漏洞、敏感信息泄露漏洞等很少涉及。
先简单的聊一聊 SQL 注入,这个基本上是最常见的 web 漏洞了。SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。在设计程序,忽略了对输入字符串中夹带的SQL指令的检查,被数据库误认为是正常的SQL指令而运行,从而使数据库受到攻击,可能导致数据被窃取、更改、删除,以及进一步导致网站被嵌入恶意代码、被植入后门程序等危害。比如执行下述 SQL 时
String sql = "select * from user where username = '" +uname "' and password = '" + pwd + "'";
# 输入用户名为: tom' or '1=1 , 密码不输入或者随便输入, SQL如下:
select * from user from username = 'tom' or '1=1' and password = '你输入的密码'
有了or 自然只要username = 'tom' 成立, 后面的也不会起作用,这个sql基本上是很常见的比较典型的 SQL 注入问题,在直接使用 JDBC进行 SQL 拼接操作时,很容易引发这种情况。通常情况下,SQL注入的位置包括:
(1)表单提交,主要是POST请求,也包括GET请求;
(2)URL参数提交,主要为GET请求参数;
(3)Cookie参数提交。
将JDBC代码中的Statement 换成 PreparedStatement ,使用预编译机制进行 SQL 注入预防,最普遍的是选用 Mybatis 或 Hibernate 等持久化框架,避免 JDBC 的直接使用,并在 Mybatis 的 SQL 中使用 '$' 符号替换'#',使预编译机制起作用。
接着我们聊聊XSS跨站站点脚本,跨站脚本攻击(Cross-site scripting,通常简称为XSS)发生在客户端,可被用于进行窃取隐私、钓鱼欺骗、窃取密码、传播恶意代码等攻击。XSS攻击使用到的技术主要为HTML和Javascript,也包括VBScript和ActionScript等。XSS攻击对WEB服务器虽无直接危害,但是它借助网站进行传播,使网站的使用用户受到攻击,导致网站用户帐号被窃取,从而对网站也产生了较严重的危害。对于这个我是有亲身体会的,我的应用是基于Java + Velocity 实现的请求转发应用,比如通过 个小时,才完成解决这一漏洞。
顺便提一下,还有一种漏洞在运营维护过程中遇到过,在登录注册模块,由于当时刚参加工作不久,欠缺研发经验,在注册环节未使用验证码,导致大量的注册机注册,给非法用户牟利带来方便,在短信验证阶段,为处理非法验证和重复发生的问题,导致一些运营商手机号,被非法用户触发发生短信验证码,给用户造成困扰,引起用户向运营商投诉,对公司声誉造成一定影响。这个事情也是自己亲身经历,面向C端用户的研发,要多考虑安全方面的问题,既要让用户用起来方便,又需要避免安全问题,并且一旦发现安全问题,要具备及时止损的措施的应对预案。
作者:夕阳雨晴,欢迎关注我的头条号:偶尔美文,主流Java,为你讲述不一样的码农生活。