《黑客攻防技术宝典Web实战篇@第2版》读书笔记1:了解Web应用程序

读书笔记第一部分对应原书的第一章,主要介绍了Web应用程序的发展,功能,安全状况。

Web应用程序的发展历程

早期的万维网仅由Web站点构成,只是包含静态文档的信息库,随后人们发明了Web浏览器用来检索和显示那些文档,但这些信息只是由服务器单向传送给浏览器,并不需要验证用户的合法性,所有用户同等,提供同样的信息。

所以当时一个Web站点的安全威胁主要来自于Web服务器系统与相关软件的(诸多)漏洞。攻击者入侵站点后并不能得到敏感信息,至多修改一下服务器上的静态文件,歪曲站点的内容,或者利用服务器本身做一些“非法的事情”。

经过几十年的发展,而今的万维网和早期的万维网早已不可同日而语,Web上的大多数站点实际上就是应用程序,它们功能强大,在服务器与浏览器之间进行双向信息传送。“注册,登录,金融交易,搜索,内容创作”等等这些内容以动态的方式成为解决用户特殊需求的方案,它们处理诸多信息包括私密和高度敏感的信息,因此,安全问题变的至关重要:如果人们认为Web应用程序会将他们的信息泄露给未授权的访问者,他们就会拒绝这个Web应用程序

Web应用程序的常见功能

创建Web应用程序的目的是执行可以在线完成的任何有用功能:

  1. 购物(Taobao,JD,Amazon)
  2. 社交网络(BBS,SNS)
  3. 微博(Weibo)
  4. 博客(Bloggers)
  5. 银行服务(BOC,ICBC)
  6. Web搜索(Baidu)
  7. Web邮件(QQmail,企业Mail)
  8. 交互信息(Dingding,QQ,iMassges)

企业内部已广泛使用Web应用程序来支持关键业务功能,这类应用程序可以访问各种高度敏感的数据和功能:

  1. 使用HR应用程序,访问工资信息,绩效反馈。
  2. 连接关键体系架构的管理接口:Web和邮件服务器。
  3. 共享文档,管理工作流程,项目跟踪。
  4. ERP软件通过Web浏览器访问。

为降低成本,企业圈内开始推崇所谓“云计算”业务,并将此业务开发交于外包企业实施和托管,将ERP搬至网上。在这些所谓的“云”解决方案中,业务关键功能和数据向数目更庞大的潜在攻击者开发,而组织却越来越多地依赖于不受其控制的安全防御。

Web应用程序的优点

  1. HTTP是用于访问万维网的核心通信协议,它是轻量级的,无须连接,这提供了对通信错误的容错性。这使得用户可以在任何网络配置下进行安全通信。
  2. 每个Web用户在其PC端和移动端上都默认装有浏览器,而Web应用程序可以在任何浏览器上运行。
  3. 现今的Web界面使用标准的导航和输入控件,这保证了用户不需要通过学习就可以即时熟悉这些功能。
  4. 用于开发Web应用程序的核心技术和语言工具相对简单,并且有大量的开源代码和资源可供整合。

Web应用程序安全

应用程序各不相同,所包含的漏洞也各不相同,许多应用程序是由开发人员独立开发,还有许多开发人员对自己所编写的代码可能引起的安全问题略知一二,于是一些开发人员从未在开发应用时未曾考虑到的攻击方式在使用过程当中相继出现了,而新技术的开发也会引入新的漏洞。

针对Web应用程序最严重的攻击,是那些能够绕到后端系统的无限访问权限的攻击。

在Web应用程序的整个发展过程中,直到今天,甚至可预见的未来,攻击者与防御者的战斗仍然在继续,且没有解决的迹象。

“本站点是安全的”

大多数网站声称自己使用128位安全套接层(Secure Socket Layer, SSL)技术设计,遵循支付卡行业(PCI)标准,来证明自己的加密协议是无懈可击的。

但实际上,大多数Web应用程序不安全,不仅仅是技术应用上的,还有开发人员在基础设计上的漏洞:

  1. 不完善的身份验证措施
  2. 不完善的访问控制措施
  3. SQL注入
  4. 跨站点脚本
  5. 信息泄露
  6. 跨站点请求伪造

SSL在机密性与安全性上是出色的技术,但它的问题在于它并不能抵御直接针对某个应用程序的服务器或客户端组件的攻击,而许多成功的攻击都恰恰属于这种类型。

所以SSL并不能阻止上述任何漏洞或许多其他使应用程序受到威胁的漏洞。

核心安全问题:用户可提交任意输入

Web应用程序有个根本性问题,即无法控制客户端,所以用户几乎可向服务器端提交任意输入。所以应用程序必须假设用户输入的都是恶意信息。

这个核心问题表现在多个方面:

  1. 用户可干预客户端与服务器间传送的所有数据。
  2. 用户可按任何顺序发送请求,并可在应用程序要求之外的不同阶段不止一次提交或根本不提交参数。
  3. 用户交不限于使用一种Web浏览器访问应用程序,这导致大量各种各样的工具可以协助攻击Web应用程序。

绝大多数针对Web应用程序的攻击都涉及向服务器提交信息:

  1. 更改隐藏的HTML表单字段提交的产品价格,以更低价格欺诈性购买。
  2. 修改在HTTP Cookie中的会话令牌,支持另一个验证用户的会话。
  3. 利用应用程序处理过程中的逻辑错误删除某些正常提交的数据。
  4. 改变由后端数据库处理的某个输入,从而注入一个恶意数据库查询以访问敏感数据。

关键问题因素

  1. 不成熟的安全意识
  2. 独立开发
  3. 欺骗性的简化
  4. 迅速发展的威胁形势
  5. 资源与时间限制
  6. 技术上强其所难
  7. 对功能的需求不断增强

开发人员的技术能力,开发时间的限制,开发资源的有限利用,单一框架多程序开发使用,大量增加第三方插件,为实现功能对数据库或程序直接进行二次开发而忽视二开的安全措施,以上这些种种行为大大增加了安全问题的出现率。

新的安全边界

Web应用程序的广泛应用使得典型组织的安全边界发生了变化,以往我们关注防火墙与防御主机,而现在我们应该更关注Web应用程序本身。

Web应用程序接收用户输入的方式多式多样,数据传输的方式也多式多样,这每一步都是潜在攻击的关口,尤其是PHP,Java,JS这些语言和平台的“聚合”,每一个连接方式都成为了攻击关口。

于是站点的安全边界从服务器本身延伸到了第三方插件,聚合接口,API,某一行代码,跨域连接方式。

Web应用程序安全边界发生变化的另一原因,在于恶意攻击者利用一个良性的易受攻击的应用程序攻击任何访问它的用户,并控制用户的浏览器,如果用户位于企业内部,那么从用户的可信位置攻击者可向本网络改动攻击。

Web应用程序安全的未来

目前网络上的Web应用程序仍然充满了漏洞,整个行业也没有统一而成熟的意识。

但随意着行业的发展,各种漏洞也在被不断的修复,现有的漏洞也变得更难以发现和利用。

而攻击目标也由传统的服务器端应用程序转向用户应用程序。

 


 

版权所有,转载请注明出处。

转载自 《黑客攻防技术宝典Web实战篇@第2版》读书笔记1:了解Web应用程序 | XDY.ME@Dy大叔的日常

XDY.ME@Dy大叔的日常


更多专业前端知识,请上 【猿2048】www.mk2048.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/366182.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电脑入门完全自学手册_3DMAX零基础入门到精通的学习路线和教程

没有美术基础可以学建模吗?毋庸置疑,只要肯学都是可以的!那么我们今天来说说零基础学习建模要着重注意什么。最高效最快速的入门学习方式:看知识兔视频课程,跟着知识兔老师操作,听知识兔老师讲解&#xff0…

Python-UiAutomator2实现Android自动化测试

本帖转自搜狗测试公众号 【一、前言】 基于Python-UiAutomator2实现Android自动化测试,小编在Android应用的自动化性能测试中进行了实践。本篇将简单介绍python中使用adb、aapt命令的方法以及Python-UiAutomator2使用,后续文章将对环境搭建以及自动化性能…

硬件信息修改大师_零成本学习之单片机硬件开发(1)

从今天开始给大家逐步讲解单片机编程,有兴趣的小伙伴们,可以关注本课程,完全免费本人从事从2004年大学毕业开始从事开发工作,先后做过单片机开发、ucOSII开发、手机开发、android APP开发、PHP开发、微信小程序开发,目…

ionic3 自动创建启动背景splash以及图标icon

在新建的项目文件夹下的 resources下就是我们放置图标以及启动背景图片的位置了。 如果现在我们想生成自己的图片的启动背景以及图片,我们需要把resources下的 icon.png 以及splash.png 替换为我们的图片。 icon 图片最好为1024x1024像素 splash 图片最好为2732x2…

Spring容器的简单实现(IOC原理)

引言:容器是什么?什么是容器?Spring容器又是啥东西?我给Spring容器一个对象名字,为啥能给我创建一个对象呢? 一、容器是装东西的,就像你家的水缸,你吃饭的碗等等。 java中能作为容器…

epic怎么添加本地游戏_游戏日报:原神公测无法上架多家安卓渠道;Epic投资布局游戏UGC平台...

// 热点标签/// NOCITCE华为|小米|OPPO|米哈游|腾讯|莉莉丝B站|阅文集团|Epic|万国觉醒|灰烬战线FGO|怪物弹珠|勇者斗恶龙|金币大师阴阳师|和平精英|王者荣耀|三国志战略版1.华为、小米、OPPO等多家安卓渠道的《原神》版主发布公告称,因开发者要求/未与米哈游达成一…

php 出错处理,PHP 错误处理机制

在日常的项目开发过程中,总是会出现一些我们意想不到的异常错误,如果我们对此没有进行相对完善的处理,那么程序看上去也很不专业,也很可能就会成为别人攻击系统的有效信息;有些错误异常会终止脚本执行,这个…

使用structure101分析软件包的依赖关系

稳定应用程序的一个关键是结构良好的代码库。 我们知道我们应该建立尽可能多的黑匣子,因为一旦完成一个黑匣子,我们就不必再考虑它的内部了。 您只需要使用您或其他团队成员通过明确定义的界面编写的代码即可。 这使您可以专注于要添加的下一个功能。 当…

excel高级筛选怎么用_神!Excel高级筛选原来如此好用

转自EXCE不加班这两天的宏教程都提到了高级筛选这个功能,不过只是用到最基本的用法。高级筛选其实是一个很好用的功能,今天卢子来全面讲解。1.按关键词筛选高级筛选最重要的就是条件区域,资产名称四门书柜,日期2017/1/1&#xff0…

iis7.5配置php环境,iis7.5安装配置php环境 - iis

前言iis7.5是安装在win7、win8里的web服务器,win2003、win2000的web服务器使用的是iis6.0,由于win7、win8系统相比win2003、win2000有了改新革面的不同,因此对于iis7.5的配置也必需捣鼓一翻才能熟悉。不过...前言iis7.5是安装在win7、win8里的…

微信小程序 网络请求之设置合法域名

设置域名 登录微信公众号后台小程序中 设置→开发设置→服务器设置 必须设置域名,微信小程序才能进行网络通讯,不然会报错 如果设置好了合法域名,开发工具还提示不在合法域名列表中,因为在微信会有一段时间的缓存,等…

money (dp)

牛客网暑假训练第二场D题: 链接:https://www.nowcoder.com/acm/contest/140/D来源:牛客网 题目描述 White Cloud has built n stores numbered from 1 to n. White Rabbit wants to visit these stores in the order from 1 to n. The store …

php gps 坐标,php 计算gps坐标 距离

在计算机或GPS上经纬度经常用度、分、秒和度.度、分.分、秒.秒的混合方式进行表示,度、分、秒间的进 制是60进制,度.度、分.分、秒.秒的进制是100进制,换算时一定要注意。可以近似地认为每个纬度之间的距离是不变的111KM,每分间 1.85KM&#…

博客园如何使用MarkDown

如何使用博客园下的markdown:https://www.cnblogs.com/ulrica/p/8933549.html 博客园的 MarkDown 代码样式如何设置https://www.cnblogs.com/zhongxia/p/26b4b061f2a47518681bcdd4ff89c344.html 博客园 Markdown 编辑器指南http://www.cnblogs.com/qiaogaojian/p/61…

jQuery -- 光阴似箭(五):AJAX 方法

jQuery -- 知识点回顾篇&#xff08;五&#xff09;&#xff1a;AJAX 方法 1. $.ajax 方法&#xff1a;用于执行 AJAX&#xff08;异步 HTTP&#xff09;请求。 <!DOCTYPE html> <html> <head> <meta http-equiv"Content-Type" content"t…

ggplot2设置坐标轴范围_R语言数据可视化| ggplot2中会“分身术”的facet_wrap()与facet_grid()...

【R语言】高维数据可视化| ggplot2中会“分身术”的facet_wrap()与facet_grid()姐妹花​mp.weixin.qq.comfacet_grid()形成由行和列面化变量定义的面板矩阵。当有两个离散变量&#xff0c;并且这些变量的所有组合存在于数据中时&#xff0c;它是最有用的。如果只有一个具有多个…

php resque 计划任务,PHP-RESQUE - 实现重试

因为PHP-Resque 的重试部分需要自己写&#xff0c;网上又没啥轮子&#xff0c;而且resque也已经很久不更新了&#xff0c;所以自己研究下resque的源码&#xff0c;然后也借鉴了Laravel的队列重试机制&#xff0c;实现了PHP-Resque的重试机制。Resque地址设计思路1.这里需要阅读…

RabbitMQ集群、镜像部署配置

1 RABBITMQ简介及安装 RabbitMQ是一个开源的AMQP实现&#xff0c;服务器端用Erlang语言编写&#xff0c;支持多种客户端&#xff0c;如&#xff1a;Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等&#xff0c;支持AJAX。用于在分布式系统中存储转发消息…

C语言、c++实现超好玩植物大战僵尸(完整版附源码)

实现这个游戏需要Easy_X main.cpp //开发日志 //1导入素材 //2实现最开始的游戏场景 //3实现游戏顶部的工具栏 //4实现工具栏里面的游戏卡牌 #define WIN_WIDTH 900 #define WIN_HEIGHT 600 //定义植物类型 enum { WAN_DOU, XIANG_RI_KUI, ZHI_WU_COUNT }; #include<stdio.…

【代码笔记】Web-HTML-颜色

一&#xff0c;效果图。 二&#xff0c;代码。 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>html 颜色</title> </head> <body> <!--html 颜色--> <p style"">> 通过十六…