web安全基础

web安全基础

常见的web安全攻击手段有不少,好比SQL注入,XSS,CSRF,HTTP头攻击,cookie攻击,重定向攻击,上传文件攻击等,其中大多数均可以经过三种方法——过滤代理转义(实体化)来解决。php

SQL注入

SQL注入方法?

使用工具--SQLmap SQL注入之SQLmap入门 - FreeBuf.COM | 关注黑客与极客html

两种类型:常规注入和宽字节注入mysql

常规注入方式,一般没有任何过滤,直接把参数存放到了SQL语句当中nginx

宽字节注入:web

怎么防止SQL注入?

将PHP的内置mysql_real_escape_string()函数用做任何用户输入的包装器。ajax

这个函数对字符串中的字符进行转义,使字符串不可能传递撇号等特殊字符,并让mysql根据特殊字符进行操做。sql

根本上防止SQL注入的方法,就是参数化查询或者作词法分析。shell

虽然SQL注入漏洞很是多,可是防范起来却挺简单的,下面介绍几个过滤函数和类:数据库

  1. 魔术引号转义(gdc,runtime,sybase)

clipboard.png

  1. 过滤函数和类跨域

    • addslashes(在指定的预约义字符前添加反斜杠。这些字符是单引号双引号反斜线null)
    • mysql_real_escape_string
    • intval
  2. PDO 预处理

XSS攻击

XSS攻击方法?

XSS,跨站式脚本攻击,它指的是恶意攻击者往 Web 页面里插入恶意 html 代码,当用户浏览该页之时,嵌入其中 Web 里面的 html 代码会被执行,从而达到恶意的特殊目的。

XSS属于被动式的攻击。因此每每很差防止。

XSS漏洞挖掘方法

  • 数据接收位置,检查 _POST、$_COOKIE是否通过转义。
  • 常见的反射型XSS搜索这种相似位置发现次数较多。
  • 而存储型在文章,评论出现比较多。

XSS攻击分为三种:反射型,存储型,dom型

反射型,危害小,通常

反射型XSS原理:就是经过给别人发送带有恶意脚本代码参数的URL,当URL地址被打开时,特定的代码参数会被HTML解析,执行,如此就能够获取用户的COOIKE,进而盗号登录。好比hack甲构造好修改密码的URL并把密码修改为123,可是修改密码只有在登录方乙才能修改,乙在登录的状况下点击甲构造好的URL将直接在不知情的状况下修改密码。

特色是:非持久化,必须用户点击带有特定参数的连接才能引发。

存储型,危害大,影响时间长

存储型XSS原理,假设你打开了一篇正常的文章页面,下面有评论功能。这个时候你去评论了一下,在文本框中输入了一些JavaScript代码,提交以后,你刷新这个页面后发现刚刚提交的代码又被原封不动的返回来而且执行了。

这个时候你会想,我要写一段 JavaScript 代码获取 cookie 信息,而后经过ajax发送到本身的服务器去。构造好代码后你把连接发给其余的朋友,或者网站的管理员,他们打开 JavaScript 代码就执行了,你服务器就接收到了sessionid,你就能够拿到他的用户权限了。

dom型,特殊的一种

dom型 XSS 是由于 JavaScript 执行了dom 操做,所形成的 XSS 漏洞,具体以下图。能够看到虽然通过 html 转义了,可是这块代码在返回到 html 中,又被 JavaScript 做为 dom 元素操做。那当我输入

?name=<img src=1 onerror=alert(1)>

的时候依然会存在 XSS 漏洞。

clipboard.png

怎么防止XSS攻击?

  • 过滤:strip_tags()去掉全部HTML,XML,PHP的标签,
  • HTML内容实体化转义:有两种方式:在入口和出口,我建议是在入口处转义,防止出口位置取出来的时候忘记转义,若是已经在入口转义了,出口位置就不用再次转义。htmlspecialchars()等函数。
  • 框架层面:XSS注入我也不怕不怕啦——PHP从框架层面屏蔽XSS的思考和实践 - 推酷
  • httpOnly 即便存在xss漏洞,能够把危害大大下降。

比较主流的XSS防止手段主要有两种,

一种是在用户输入时将异常关键字过滤,

另外一种是在页面渲染时将Html网页实体化转义。

可是,若是咱们必需要输入所谓“敏感字符”的时候,由怎么办?怎么处理这种数据和业务数据有冲突的状况?

第二种Html内容实体化转义的方式,又太依赖开发习惯,不靠谱。

那么还有一种方法就是在框架层面,根据实际状况具体分析,XSS注入我也不怕不怕啦——PHP从框架层面屏蔽XSS的思考和实践 - 推酷

CSRF攻击

CSRF攻击方法?

CSRF跨站式请求伪造。CSRF在用户不知情的状况下,冒充用户发起请求,完成一些违背用户意愿的请求(如恶意发帖,删帖,改密码,发邮件)。

与XSS跨站式脚本攻击不一样的是,XSS是被动的,更像是一个陷阱,而CSRF则是主动的,跨域假装成用户发送请求来达到目的。一般来讲CSRF是基于XSS实现的,可是XSS更偏向于方法论,而CSRF更偏向于一种形式。

好比...

咱们来看下面的一段代码,这个表单当被访问到的时候,用户就退出了登陆。假设有一个转帐的表单,只须要填写对方的用户名,和金额就能够,那若是我提早把 URL 构造好,发给受害者,当点击后,钱就被转走了。

或者我把这个 URL 放到个人网页中,经过<img src="我构造的URL" ,当其余人打开个人网址后,就中招了。

clipboard.png

怎么防止CSRF攻击?

  • 图片验证码
  • token验证(默认POST请求的时候都要带上token)
  • referer信息验证(判断HTTP的请求源是不是同源的)

若是三个判断都没有,那么就存在了 CSRF 漏洞,CSRF 不只限于 GET 请求, POST 请求一样存在。


图片验证码,这个想必你们都知道,可是用户体验并很差,咱们能够看下面的一些处理方法。

token验证

token验证方法以下,每次访问表单页的时候,生成一个不可预测的token存放在服务器session中,另一份放页面中,提交表单的时候须要把这个token带过去,接收表单的时候先验证一下token是否合法。

Referer信息验证

大多数状况下,浏览器访问一个地址,其中header头里面会包含Referer信息,里面存储了请求是从哪里发起的。

若是HTTP头里包含有Referer的时候,咱们能够区分请求是同域下仍是跨站发起的,因此咱们也能够经过判断有问题的请求是不是同域下发起的来防护 CSRF 攻击。

Referer 验证的时候有几点须要注意,若是判断Referer是否包含 *.XXX.com,若是有子域名有漏洞,会存在绕过的可能。

若是判断的条件的是Referer中是否包含字符 ‘xxx.com’ 那攻击者在他目录中创建一个 xxx.com 文件夹一样存在绕过的可能。若是能够最合适的判断是,直接判断是否等于当前域名。

DDOS攻击

什么是DDOS攻击?

DDOS攻击全称为:分布式拒绝服务攻击,是指击者利用大量“肉鸡”对攻击目标发动大量的正常或非正常请求、耗尽目标主机资源或网络资源,从而使被攻击的主机不能为合法用户提供服务。
DDOS攻击的本质是:利用木桶原理,寻找利用系统应用的瓶颈;阻塞和耗尽;当前问题:用户的带宽小于攻击的规模,噪声访问带宽成为木桶的短板。

其实cc攻击也属于ddos攻击的一种。

对于这类的攻击,用软硬件结合的方式来防护是最有效的。单独 防护都是蛮吃力的

什么是CC攻击?

CC攻击时一种以网站页面为攻击目标的应用层攻击,攻击时选择服务器开放的页面中须要较多资源开销的应用。例如占用大量CPU资源进行运算或须要大量访问数据库的应用。主要是以.asp、.jsp、.php、.cgi等结尾的页面资源。
在CC防御上,经济实力好的能够选择购买DDOS高防设备,由于CC攻击也属于DDOS攻击的一种。经济实力通常,能够考虑安装防御软件。安全狗或者360网站卫士。我的趋向于安全狗,同时安装服务器安全狗和网站安全狗能够有效地防御CC攻击。能够有效地防止服务器由于受到CC攻击而产生CPU使用率100%的状况出现。

什么是CC攻击?

  1. CC攻击来的IP都是真实的,分散的;
  2. CC攻击的数据包都是正常的数据包;
  3. CC攻击的请求,全都是有效的请求,没法拒绝的请求;
  4. 由于cc攻击的是网页,服务器什么均可以链接,ping也没问题,可是网页就是访问不;
  5. 可是iis一开服务器一会就死,并且被攻击后就老丢包。不知道是否是cc攻击,syn 攻击频率才78ack攻击频率663.

DDOS攻击和CC攻击的区别?

CC攻击是DDOS(分布式拒绝服务)的一种,相比其它的DDOS攻击CC彷佛更有技术含量一些。这种攻击你见不到真实源IP,见不到特别大的异常流量,但形成服务器没法进行正常链接。最让站长们忧虑的是这种攻击技术含量低,利用更换IP代理工具和一些IP代理一个初、中级的电脑水平的用户就可以实施攻击。所以,你们有必要了解CC攻击的原理及若是发现CC攻击和对其的防范措施。

http://baike.baidu.com/item/c...

代码安全性检查软件

RIPS

它最大的亮点在于调用了 PHP 内置解析器接口token_get_all,

而且使用Parser作了语法分析,实现了跨文件的变量及函数追踪,扫描结果中很是直观地展现了漏洞造成及变量传递过程,误报率很是低。

RIPS 可以发现 SQL 注入、XSS 跨站、文件包含、代码执行、文件读取等多种漏洞,支持多种样式的代码高亮。比较有意思的是,它还支持自动生成漏洞利用。

安装方法

下载地址:https://jaist.dl.sourceforge....

解压到任意一个PHP的运行目录

在浏览器输入对应网址,能够经过下图看到有一个path 在里面填写你要分析的项目文件路径,点击 scan.

seay源代码审计系统

傻瓜化的自动审计 。

支持php代码调试 。

函数/变量定位 。

生成审计报告。

自定义审计规则 。

mysql数据库管理 。

黑盒敏感信息泄露一键审计 。

支持正则匹配调试 。

编辑保存文件 。

POST数据包提交 。

常规漏洞的防范方法

taint PHP安全拓展

Taint 能够用来检测隐藏的 XSS code, SQL 注入, Shell注入等漏洞,而且这些漏洞若是要用静态分析工具去排查, 将会很是困难, 咱们来看下面这张图:

clipboard.png

安装方法

下载 taint: http://pecl.php.net/package/t...

配置

/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

更加详细的能够参考:http://www.cnblogs.com/linzhe...

应用场景

开发团队要求每一个人都作到很是的安全比较难,可是把taint安装在开发环境,特别适合,一看到 warning 信息通常都回去改。

ngx_lua_waf

功能介绍

防止 sql 注入,本地包含,部分溢出,fuzzing 测试,xss,SSRF 等 web攻击。

防止 svn /备份之类文件泄漏。

防止 ApacheBench 之类压力测试工具的攻击。

屏蔽常见的扫描黑客工具,扫描器。

屏蔽异常的网络请求。

屏蔽图片附件类目录 php 执行权限。

防止 webshell 上传。

安装方法

安装依赖: luajit 、ngx_devel_kit、nginx_lua_module

安装nginx、ngx_lua_waf

在nginx.conf里的 http 添加配置

详细安装文档

效果图

image

相关文章
相关标签/搜索