Web安全知识

来源:互联网 发布:sas高校数据分析大赛 编辑:程序博客网 时间:2024/05/17 07:32

1. CRSF(跨站脚本伪造)
主要过程就是,用户登录A网站,通过验证产生cookie,在未登出A网站的情况下去访问危险,B网站,发出一条恶意的请求,浏览器发起会话的过程中发送本地保存的cookie到网站A,导致用户信息被盗用。
防范措施:

验证码:应用程序和用户进行交互过程中,特别是账户交易这种核心步骤,强制用户输入验证码,才能完成最终请求 ;
Referer Check :HTTP Referer是header的一部分,当浏览器向web服务器发送请求时,一般会带上Referer信息告诉服务器是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。可以通过检查请求的来源来防御CSRF攻击 ;
Anti CRSF Token,即发送请求时在HTTP 请求中以参数的形式加入一个随机产生的token,并在服务器建立一个拦截器来验证这个token。服务器读取浏览器当前域cookie中这个token值,会进行校验该请求当中的token和cookie当中的token值是否都存在且相等,才认为这是合法的请求。否则认为这次请求是违法的,拒绝该次服务。

2. XSS(跨站脚本攻击)
主要过程:恶意攻击者通过往web页面里注入恶意script代码,当用户浏览网页时,执行其中恶意代码,可以窃取用户的cookie信息,会话劫持等攻击。XSS根据攻击效果可以分为三类:
1.反射型XSS:服务器接受客户端的请求包,不会存储请求包的内容,只是把用户输入的数据“反射给浏览器”。访问这个链接则会弹出页面的cookie内容,若攻击者把alert改为一个精心构造的发送函数,就可以把用户的cookie偷走。
2.存储型XSS:会把用户输入的数据“存储“在服务器端。这种XSS具有很强的稳定性。如黑客写入一篇带有恶意javacsript代码的博客文章。发表后。文章存在服务器端,所有访问该博客文章的用户,都会执行这段恶意的JavaScript代码。
3.DOM Based XSS :这类XSS攻击者将攻击脚本注入到DOM结构里。
构造技巧:1.利用字符编码;2.绕过长度限制;3.使用<base>标签,该标签作用就是定义页面上的所有使用“相对路径”标签的hosting标签。4.利用document.name跨域,跨数据传递数据。
防范措施:

1.httpOnly 若设置该属性,这种攻击会失败,cookie无法被javascript读取。
2.输入检查:对用户输入的数据做一定的过滤。如输入的数据是否符合预期的格式,比如日期格式,Email格式,电话号码格式等等;
3. 输出编码。服务器端输出到浏览器的数据,可以使用系统的安全函数来进行编码或转义来防范XSS攻击。在PHP中,有htmlentities()和htmlspecialchars()两个函数可以满足安全要求。相应的JavaScript的编码方式可以使用JavascriptEncode。

3.SQL注入攻击
本质就是把用户输入的数据当做代码执行。攻击者将SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。两个条件:1.用户能够控制数据的输入,2.代码拼凑了用户输入的数据,把数据当成代码执行了。
常见注入原因:
(1)转义字符处理不当,特别是输入验证和单引号处理不当。
(2)后台查询语句处理不当,开发者完全信赖用户的输入,未对输入的字段进行判断和过滤处理,直接调用用户输入字段访问数据库。
(3) SQL语句被拼接。攻击者构造精心设计拼接过的SQL语句,来达到恶意的目的。如构造语句:select * from users where userid=123; DROP TABLE users;直接导致user表被删除。
防御技巧:

1.使用预编译语句,绑定变量。SQL语句的语义不会发生变化,在SQL语句中,变量用?表示,攻击者无法改变SQL的结构。
2.使用安全的存储过程对抗SQL注入。存储过程中,应该使用严格的输入过滤或者是编码函数来处理用户的输入数据。
3.检查数据类型:检查输入数据的数据类型,可以很大程度上对抗SQL注入。
4.使用安全函数,实现基本的编码函数,可以帮助对抗SQL注入。

4.文件上传漏洞
文件上传漏洞的原理:由于文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,导致允许攻击者向某个可通过 Web 访问的目录上传任意PHP文件,并能够将这些文件传递给 PHP 解释器,就可以在远程服务器上执行任意PHP脚本。
防御技巧:

对于文件上传漏洞攻击,我们可以做如下防范:
(1) 检查服务器是否判断了上传文件类型及后缀。
(2) 定义上传文件类型白名单,即只允许白名单里面类型的文件上传。
(3) 文件上传目录禁止执行脚本解析,避免攻击者进行二次攻击。