Web Application Security

1.web应用面临的主要安全问题

  1)黑客入侵:撞库拖库、网页篡改、后门木马、加密勒索、数据泄露

  2)恶意内容

2.web应用安全现状

  1)网站安全问题:弱口令 > SQL注入 > 信息泄露 > 命令执行

  2)web应用攻击类型:Webshell探测  > 命令执行 > sql注入 > 文件包含 >文件上传

  3)漏洞类型:缓冲区溢出  > 跨站脚本 > 输入认证 > SQL注入 > 权限许可与访问控制

3.Web应用被攻击的原因:

  自身存在漏洞

  1)业务:缺乏业务风险控制手段 。垃圾注册大量用户获取出事击放和投票权;绕过接口验证机制,尝试批量破解用户账号密码(撞库)

  2)内容:不对UGC进行内容审核。

  3)数据层:数据明文存储和传输。入侵后窃取用户信息或篡改数据,例如篡改网页

  4)应用层:存在应用和业务逻辑漏洞。通过罗东入侵后端服务器和数据库

  5)主机层:弱口令、系统漏洞。通过系统漏洞入侵,并上传后门、木马

  6)网络层:没有防范DDoS进攻的能力。DDoS/CC攻击,造成业务中断

  7)移动APP:移动App未加固。反编译破解App客户端,获得敏感代码,进而伪造或篡改信息,或制作仿冒应用

  威胁持续加剧

  1)国家背景支持:政治动机驱动

  2)漫无目的黑客:脚本小子。到处显示自己能力的黑客

  3)网络犯罪:窃取金融信息、个人信息、DDOS、安装Botnet等,主要经济利益驱动

  4)自动驱动型黑客:名利驱动型。可以发动高难度的入侵,主要证明自己的能力;

  5)白帽子:热爱黑客技术,主要是帮助企业发现安全漏洞,可能是专业也可能是初学者

  信息价值的飞速提升-》经济利益

4.web应用安全类型

1)注入:

  攻击者发送恶意数据构造数据查询或操作系统命令

  注入类型包括:SQL注入、操作系统命令注入、XML注入、LDAP注入等

  注入是解释性语言(如脚本语言和标记型语言)不得不面对的挑战性问题

  危害:信息泄露(数据库被窃取)、操作系统被控制

  

  SQL注入:

示例:2016年,中国银行某站MySql注入(涉及管理员密码/大量用户卡号信息)

    华为某站存在SQL注入(17w用户&任意文件下载)

    天虹基金主站存在SQL注入

SQL注入的原因:

  对敏感字符不加过滤不做转义处理

    单引号篡改SQL语句

    注释符号  --或 /**/篡改SQL语句

    分号;在同一字符串内执行多个数据操作

SQL注入代码示例:

String query="SELECT * FROM accounts WHERE custID=' "+request.getParamenter("id")+"'";

恶意输入

http://example.com/app/accountView?id='or'1 ='1'

被篡改后的SQL语语句

SELECT * FROM accounts WHERE custID='or'1'='1'
//即custID=' 或 '1'='1'时,查询accouts,但1恒等于1,所以该SQL就等价于 Select * From accouts

SQL注入预防

  对输入数据进行验证/编码/过滤

  不要动态主装SQL语句,正确使用预编译SQL语句

  如果需要动态组装sql语句,确保在使用输入数据在构造SQL之前,对特殊字符进行转义

  加固数据库,控制损失范围

    禁止将任何高权限账号(例如:root\data\sa等)用于应用程序数据库访问。更安全的方法是单独为应用创建有限权限的账号

    限制账号所能访问的数据表

    拒绝账号访问敏感的系统存储过程

2)失效的认证和会话管理

  身份认证:用户名/密码>Token/PIN>指纹/脸扫描

  会话管理:Http利用会话管理机制来实现连接识别。用户登录通过身份认证后获取session,通常放在cookie中,之后根据session对用户身份进行识别,而不需要每次都要登陆

  危害:信息泄露、用户会话被劫持

  预防方法:

    使用SSL保护用户身份信息和sessionID

    对用户密码强度设置做要求

    登录使用验证吗或双因子认证账号进行短时锁定(双因子

    对连续多次登录失败的账号进行短时锁定

不使用简单或可预期的密码保护问题

验证成功后更换sessionID

不在URL中显示sessionID

设置session闲置超时

确保退出、注销功能强制销毁session

3)跨站脚本攻击(XSS)

  攻击者通过在Web页面输入点 注入恶意脚本,若web应用对输入数据不进行处理,直接结果输出到浏览器,浏览器将执行恶意脚本

  XSS攻击类型:

    非持久型:也称反射型XSS,通过Ge和post方法,将注入的恶意数据放置在URL的query字符串 或 form 数据中。如果服务器端对输入的数据不进行过滤,验证或编码,将恶意数据直接呈现给客户,可能会造成XSS

    持久型,也叫存储型XSS,通常因为服务器端未将输入的恶意脚本通过验证就直接存储到数据库

  危害:Dos攻击(使网络阻塞/主机资源耗尽)、信息泄露、篡改网页

  示例:2011年,新浪微博Xss攻击事件:大量用户中毒后自动向自己的粉丝发送带链接的私信和微博,并自动关注一名hellosamy的用户。由于微博使用的是短链接,用户只能看到诱人的新闻标题的私信和微博,当他们点击链接后便也会中毒,造成恶性循环

  预防方式:

    编码:直接将HTML标签最关键的字符<>&编码为&it;&gt;&amp

    过滤:将script/style/iframe/onmouseover等有害字符串去掉,但保留<>&等有限的基本标签

    防范XSS的真正挑战在于全面

      输入过滤:比较低效,只使用过滤会很难全面(前端包含91中HTML标签、十多种编码方式、数种对象类型...),而且可能导致意外结果(例如:alice's变成alices),有时候还需要多次过来(例如:<scrip<script>t> )

      输入编码:可设计全局的解决方案

      输出编码:用于解决输入编码无法处理的已入库数据

        借助第三方代码库

          Java:OWASP的WSAPI与Java Encoder、Coverity Security Library(CSL)

          JavaScript:Encoder.js、DOMPurify

4)不安全对象直接引用

  用户可以通过修改访问参数可以直接访问非授权信息(例如:http://www.ddd.com/userinfo.do?ID=)

  原因:开发者未设置合理的访问权限控制

  示例:澳大利亚一个税务局网站被攻击者通过简单的修改ID获取了上万家公司的信息

  危害:信息泄露

  预防方式:(以下方案结合使用)

    使用随机书使唯一标识变得难以猜测,增加攻击难度

    隐藏实际引用,使用随机书为直接引用标识,生成非直接引用标识

    确保对每个页面的访问都坚持访问去权限和页面所有权

5.Web 安全测试工具

  白盒商业:

    HPE Fortify(Static Code Analyzer)

    IBM Security AppScan Source

    CA Veracode Greenlight

    Sonar Source Code Analyzers

  白盒开源:

    SonarQube,SonarLint

    FindBugs

  黑盒商业:

    HPE Fortify WebInspect

    SoapUI NG Pro

  黑盒开源:

    Selenium

    soapUI

    OWASP ZAP

    sqlmap

    Metasploit

    w3af

    Burp Suite

6.Web应用安全交互测试工具(即,开发时提示是否有漏洞)

    商业:

      HPE Fortify Declnspect

7.HPE Fortify 使用

  Static Code Analyzer 源码静态扫描

  WebInspect动态扫描

  将扫描工具和集成Software Security Center。扫描发现的漏洞会自动创建SSC。SSC可以对比前后测试结果改进,提供测试报表

8.Web安全控制的流程:

  inital review

  Threat modeling

  Design review

  Code review

  Risk assessment

  Risk mitigation

  Benchmark

  Maintain

  

没有对敏感字符

Web Application Security(Web应用安全)的更多相关文章

  1. Web Application和Web Site两个模板的比较

    Scenario Web Application Project Web Site Project 项目定义 跟 Visual Studio .NET 2003 类似,由于项目文件的存在,只有被项目文 ...

  2. Spring Security(三十七):Part IV. Web Application Security

    Most Spring Security users will be using the framework in applications which make user of HTTP and t ...

  3. IDEA artifacts Web Application:Exploded Web Application:Archive

    首先,artifacts是maven中的一个概念,表示项目/modules如何打包,比如jar,war,war exploded,ear等打包形式,一个项目或者说module有了artifacts 就 ...

  4. Spring Security(二十八):9.4 Authentication in a Web Application

    Now let’s explore the situation where you are using Spring Security in a web application (without we ...

  5. ModSecurity web application firewall (WAF) Research

    catalog . 引言 . OWASP ModSecurity Core Rule Set (CRS) Project . Installation mod_security for Apache ...

  6. What is Web Application Architecture? How It Works, Trends, Best Practices and More

    At Stackify, we understand the amount of effort that goes into creating great applications. That’s w ...

  7. WEB APPLICATION PENETRATION TESTING NOTES

    此文转载 XXE VALID USE CASE This is a nonmalicious example of how external entities are used: <?xml v ...

  8. Tomcat翻译--Tomcat Web Application Deployment(Tomcat中部署web应用)

    原文:http://tomcat.apache.org/tomcat-7.0-doc/deployer-howto.html Introduction(介绍) Deployment is the te ...

  9. ASP.NET Web Application中使用链接文件

    最近重构一个内部的平台系统,作为一个平台,其下有几个子系统,每个子系统有自己的网站系统.而每个网站使用的是统一的风格,统一的验证机制,反馈系统,等等.所以,为了避免几个子系统中重复出现相同的资源或文件 ...

随机推荐

  1. CVE_2012_1876堆溢出分析

    首先用windbg附加进程ie页面内容进程,!gflag +hpa添加堆尾检查,.childdbg 1允许子进程调试,然后加载POC. POC: <html> <body> & ...

  2. 【原创】大叔算法分享(5)聚类算法DBSCAN

    一 简介 DBSCAN:Density-based spatial clustering of applications with noise is a data clustering algorit ...

  3. IIS无法删除应该程序池 因为它包含X个应用程序

    今天代码主分支在vs2015创建了虚拟目录http://localhost/webapp指向的物理路径是E:\webapp 之后新开了一个分支把代码放在了D:\webapp之后又在vs2015中创建了 ...

  4. avalonjs学习笔记之实现一个简单的查询页

    官网地址:http://avalonjs.coding.me/ 因为是为了学习js,所以对样式没什么要求,先放效果图: 步骤为:初始页面-------条件查询-------编辑员工1-------保存 ...

  5. RDay1-Problem 3 C

    题目描述 初始给定n个卡片拍成一排,其中第i个卡片上的数为x[i]. 有q个询问,每次询问给定L和R表示询问区间[L,R]内的卡片所有出现了偶数次的数的异或和是多少. 输入 输入文件C.in 输入一行 ...

  6. django 实战篇之模板层

    模板层 ​ {{}} 变量相关 ​ {%%} 逻辑相关 ​ 前端获取容器类型的数据统一使用 句点符(.) ​ 两种给模板传递值的方式 return render(request,'index.html ...

  7. uboot、内核、根文件系统启动流程

    [1]Uboot的启动流程  Uboot的启动分为两个阶段.  第一阶段:设置异常向量表,设置ARM核为svc模式,关cache和关mmu,  关看门狗,初始化时钟,串口,内存,初始化栈空间,清bss ...

  8. Windows Internals 笔记——进程的权限

    1.大多数用户都用一个管理员账户来登录Windows,在Vista之前,这样的登录会创建一个安全令牌.每当有代码试图使用一个受保护的安全资源时,操作系统就会出示这个令牌.从包括Windows资源管理器 ...

  9. Java+maven+httpcomponents封装post/get请求

    httpcore4.4.10, httpclient4.5.6 package com.test.http; import com.alibaba.fastjson.JSONArray; import ...

  10. CodeForces 623E Transforming Sequence 动态规划 倍增 多项式 FFT 组合数学

    原文链接http://www.cnblogs.com/zhouzhendong/p/8848990.html 题目传送门 - CodeForces 623E 题意 给定$n,k$. 让你构造序列$a( ...