今天这篇文章我们来讲讲以Web站点作为目标的攻击手段,以及这些攻击会对Web站点造成的影响。
其实,一般来说HTTP协议是不会成为被攻击的对象的,而应用在协议上的服务器与客户端,以及运行在服务器上的应用程序才是攻击目标。
针对Web应用的攻击模式
- 主动攻击:攻击者通过直接访问Web应用,把攻击代码传入的攻击模式。由于该模式是针对服务器上的资源进行攻击,因此攻击者需要能够访问到那些资源。如:SQL注入攻击和OS命令注入攻击。
- 被动攻击:利用圈套策略执行攻击代码的攻击模型。在被动攻击过程中,攻击者不直接对目标Web应用访问发起攻击。如:跨站脚本攻击和跨站点请求伪造。
接下来我们就来讲讲这四种攻击手段:
SQL注入攻击
何为SQL?
SQL,即用来操作关系型数据库管理系统的数据库语言,通过SQL可以操作数据或定义数据等。
由于Web应用通常会用到数据库,当需要对数据库数据进行增删改查操作时,如果在调用SQL语句方式上存在疏漏,就有可能执行被恶意注入的SQL。SQL注入攻击,即针对Web应用使用的数据库,通过运行非法的SQL而产生的攻击,攻击者可以非法查看或篡改数据库内的数据、规避认证以及执行和数据库服务器业务相关联的程序等操作。
应对方法
从安全技术手段上来说,可以通过数据防火墙实现对SQL注入攻击的防范,因为SQL注入攻击往往是通过应用程序来进攻,可以使用虚拟补丁技术实现对注入攻击的SQL特征识别,实现实时攻击阻断。
OS命令注入攻击
可以从Web应用中通过Shell来调用操作系统命令。当调用Shell时存在疏漏,尽可以执行插入的非法OS命令。OS命令注入攻击,即通过Web应用,执行非法的操作系统命令达到攻击的目的,只要在能调用Shell函数的地方就存在被攻击的风险。
应对方法
迄今为止,以防止操作系统命令注入漏洞的最有效的方法是从未调出从应用层代码OS命令。在几乎所有情况下,存在使用安全平台API实现所需功能的替代方式。
如果认为使用用户提供的输入调用操作系统命令不可避免,则必须执行强输入验证。有效验证的一些例子包括:
- 验证针对允许值的白名单
- 验证输入是否为数字
- 验证输入仅包含字母数字字符,没有其他语法或空格
跨站脚本攻击(XSS攻击)
动态创建的HTML有可能存在安全漏洞,如果攻击者编写脚本设下陷阱,用户在浏览器运行时就会不小心受到攻击。跨站脚本攻击,即通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的HTML标签或JS进行的一种攻击。
跨站脚本攻击可能造成的影响如下:
- 利用虚假输入表单骗取用户个人信息
- 利用脚本窃取用户的cookie值,被害者咋不知情情况下帮助攻击者发送恶意请求
- 显示伪造的文章或图片
应对方法
- 输入过滤
- 输出编码
- 标签黑白名单过滤
- 代码实体转义
- httponly防止cookie被盗取
跨站点请求伪造(CSRF)
跨站点请求伪造,即攻击者通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信息或设定信息等某些状态更新。
跨站点请求伪造可能造成的影响如下:
- 利用已通过认证的用户权限更新设定信息等
- 利用已通过认证的用户权限购买商品
- 利用已通过认证的用户权限在留言板上发表言论
应对方法
- 验证Referer
- 在请求参数中添加token验证
- 在HTTP头中自定义属性并验证
|