Web安全基础

Web安全基础之web应用介绍

互联网


        互联网始于1969年美国。这种将计算机网络互相联接在一起的方法可称作“网络互联”,在这基础上发展出覆盖全世界的全球性互联网络称互联网,即是互相连接一起的网络结构。
互联网是人类社会有史以来第一个世界性的图书馆和第一个全球性论坛。任何人,无论来自世界的任何地方,在任何时候,他(她)都可以参加,互联网永远不会关闭。而且,无论你是谁,你永远是受欢迎的。你不会由于不同的肤色、不同的穿戴、不同的宗教信仰而被排挤在外。
 

如何提供信息?


信息发布位置:公网                       https : / /uland.moubao.com/
创建公网站点/软件,在站点/软件中写入企业/组织公开信息/服务
用户通过浏览器/客户端访问该站点/应用,获取所需信息/服务
 

web应用

定义
1.应用程序有两种模式C/S、B/S。
2. C/S是客户端/服务器端程序,也就是说这类程序一般独立运行。
3,B/S就是浏览器端/服务器端应用程序,这类应用程序一般借助IE等浏览器来运行。WEB应用程序一般是B/S模式。
4.web应用程序首先是“应用程序”,web应用程序有自己独特的地方,就是它是基于web的,而不是采用传统方法运行的。换句话说,它是典型的浏览器/服务器架构的产物。
web应用
5.例如a.html , b.htmll.多个web网页资源,这多个web资源用于对外提供服务,此时应把这多个web资源放在一个目录中,以组成一个web应用程序。
6.一个web应用由多个静态 web资源和动态 web资源组成,如:html、css、js文件,Jsp文件、php文件、java程序、支持jar包、配置文件等等。
7.web应用开发好后,若想供外界访问,需要把web应用所在目录交给web服务器管理

web应用基本架构

            web应用其实就是一个网站,但是一个网站并不简单,它其实是由多个要素所组成的一个系统。web应用程序的设计者、eb应用服务器、动态脚本引擎(服务端程序语言)、数据库是构成web应用必不可少的要素。
                                                        

web应用的访问

 动态网页请求过程

思考:页面中所看见的新闻标题、内容是在哪里?在这些动态网页文件中吗?
当然不是,PHP代码只是做了业务逻辑上的处理,这些数据最终都被存储在数据库中。用户信息、新闻信息、访问记录都是在数据库中所存储的。我们常用的数据库有sQL Server、MySQL、oracle等等。

 

 常见的web服务端架构

 Web安全基础之web应用安全

静态网页与动态网页的区别
静态网页: html或者htm,是一种静态的页面格式,不需要服务器解析其中的脚本。由浏览器如(IE、Chrome等)解析

动态网页:由相应的脚本引擎来解释执行,根据指令生成静态网页,如PHP、JSP、ASPx等
静态                                                                     动态
1、不依赖数据库                                                 1、数依赖据库
2、灵活性差,制作、更新、维护麻烦                 2、灵活性强、易维护
3、功能限制、交互性差                                       3、功能多样、交互性强
4、安全性高                                                         4、安全性低

web应用

功能


漏洞
         漏洞是指一个系统存在的弱点或缺陷。漏洞可能来自应用软件或操作系统设计时的缺陷或编码时产生的错误,也可能来自业务在交互处理过程中的设计缺陷或逻辑流程上的不合理之处。这些缺陷、错误或不合理之处可能被有意、无意的利用,从而对一个组织的资产或运行造成不利的影响。
 

Web应用安全

常见的web应用漏洞

 web应用安全

功能:搜索
        搜索是在目标应用中快速定位所需内容的方法,常见搜索功能会与数据库内容进行检索与匹配,检索
完成后,将搜索匹配的结果形成静态的页面回显给用户。由于存在用户的输入、数据库的交互及服务端输出,若没有进行严格的输入输出控制,可能会造成SQL注入、XSS攻击。
功能:留言
         为了能提高用户体验,提供服务的应用通常会添加留言功能,方便用户对平台的反馈与用户间的交流,应用会开放用户留言功能,用户留言的内容也会保存至数据库中。留言的内容除用户自己以外,管理员与其他用户都可浏览。留言存储时为用户输入,查看留言时为服务端输出。若此时未进行严格的管控
可能会导致XSS、CSRF攻击。

功能:文件上传
      应用的后台的个人中心,用户通常可以进行对个人账户的信息进行修改,如头像、昵称等。服务端在接收用户上传的文件(头像)时,若未对该文件的内容、扩展名进行严格的管控,恶意攻击者可通过该功能上传木马文件,从而得到服务器端的控制权限
功能:文件下载
        应用内容为了统一规范或让用户更能快速的掌握应用的功能,在应用的说明页面或其他功能点中,可能会附上该应用的说明文档的下载地址,从而加快用户对应用的了解。文件下载时若未进行严格的限制,用户可通过修改目标文件名称从而达到下载任意文件的目的,造成严重的服务器端信息泄露。
功能:用户注册/登录
     注册于功能是一个应用中常见的功能,用户注册的账户通常会被写入到数据库中,在进行登录时通过用户输入的用户名与密码同数据库中的内容进行对比,从而验证登录是否正确。由于用户名与密码是用户直接输入的,服务端接收后直接拼接入服务端脚本与数据库进行添加或对比,若未对用户输入的内容进行严格的控制,便可能导致SQL注入漏洞的产生。

功能:管理员登录
      为了方便应用管理,通常应用会设置用户登录与管理员登录接口,且管理员登录页面较为隐蔽
多数管理员为了方便用户名密码记忆,通常使用默认参数,如admin/admin、admin/password等弱口令,或未进行严格的输入输出控制,从而导致该功能点存在弱口令或sQL注入漏洞
功能:订单管理
       订单管理是在购物软件中常见的功能,订单添加、支付、修改等。在用户对订单进行操作时,若服务器端未进行严格的数据校验,则可能导致订单信息被恶意纂改,如订单金额、商品数量、订单信息读取等。该类脆弱点通常被称为逻辑漏洞


Web安全基础之编码技术

简介

1. Web应用程序对其数据采用几种不同的编码方案。       username=admin   -->   username=YWRtaN4=
2.早期,HTTP协议和HTML语言都是基于文本的,于是人们设计出不同的编码方案,确保这些机制能够安全处理不常见的字符和二进制数据。攻击web应用程序通常需要使用相关方案对数据进行编码,确保应用程序按照想要的方式对其进行处理。
passwd= 123&123       -->        passwd=123%26123
3.在许多情况下,攻击者能够控制应用程序所使用的编码方案,造成其开发者无法预料的行为。
?id=1 and 1=1#-->?id=1 and 1=1%23
 

Web应用编码技术

什么是URL?
统一资源定位符(Uniform Resource Locator,常缩写为URL),有时也被俗称为网页地址(网址)。它的作用就是用于定位服务器的资源。这个资源可以是HTML页面,CSS文档,图像等等。
URL的标准格式

 Q1?
       URL中规定利用&来作为多个参数的分隔符,那当传输的数据中本身就带有&服务端该怎么去分辨呢?
例如: http://10.10.10.10/login.php?username=admin&password=123&123

URL编码
      URL编码方案会对这些有问题的字符进行编码,使其可通过HTTP安全传输。URL编码的字符都以%为前缀,其后是这个字符的二位十六进制ASCII代码。以下是常见的URL编码字符

  • %3d     =
  • %23    #
  • %25   %
  • %26   &
  • %2f    /
  • %20  空格
  • %0a  新行
  • %00   空字节

另一个值得注意的编码字符是加号(+),它代表URL编码的空格(除%2e代表空格外)。
base64编码
         Base64顾名思义就是用64个可显示字符表示所有的ASc字符,64也就是6Bits,由于base64转化时位数较多,当转化原内容不足以占满所有位置时,编码时会自动在前方补上e,形成8位一个字节的形式。如果剩下的字符不足3个字节,则用e填充,输出字符使用‘=’,因此编码后输出的文本末尾可能会出现1或2个=号
        Base64编码可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读。

       文件加密:防止传输后的数据混乱,错误数据完整性

 Hex编码
         常见的进制编码有二进制、八进制、十进制及十六进制
        计算机文件结构中,其常见的文件头、文件体、文件尾均是十六进制(Hex)编码
如图片(JPG)的文件头:FF D8 FF,文件尾:FF D9

        查看文件头的方式方法:
windows: winhex、010editor
linux:hexeditor、hexdump命令

Web安全基础之http协议剖析

为什么要认识http协议
          当发现某web应用具有命令执行漏洞时,往往会为后续入侵而让其执行更多的系统命令,达到信息收集、提权、植入后门等目的
        命令发送到服务端,而承载命令的载体其实就是HTTP协议的请求报文。利用web应用上的漏洞时,大多数情况是将“恶意代码”放入到HTTP协议的请求报文中,而web应用在处理该报文时,能恰好触发漏洞,从而执行了我们所预期的操作。
什么是http协议
        HTTP(HyperText Transfer Protocol)既超文本传输协议,一种详细规定了浏览器和万维网服
务器之间互相通信的规则,它是万维网交换信息的基础,它允许将HTML(超文本标记语言]文档从web服务器传送到web浏览器。
HTTP协议报文
        HTTP协议它遵循请求(Request)/应答(Response)模型,浏览器向服务器发送请求时,web服务器处理请求并返回适当的应答。所以在发送一次HTTP请求会产生两类报文,分别是请求报文与响应报文。它也是一种无状态的协议
 

HTTP请求方法
 

GET请求
       在GET请求中,查询字符串(名称/值对)是在URL中发送的:
/index.php?r=default/news/content&id=1,而URL是存在长度限制的,所以GET请求所传递的数据是有限的。
POST请求
       在POST请求中,查询字符串(名称/值对)是在POST请求的请求正文中发送的:
name=123&word=1238cooktime=0&checkcode=7926。在原则上来说PoST请求的数据是没有大小限制的,所以POST请求是可以传递大量数据的。
请求头部
       请求头部用来告知服务器有关于客户端请求的信息,由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。


 

 

 HTTP请求报文--消息报头

HTTP 响应报文

 

状态行

 不安全的HTTP

HTTP是不安全的,它具有许多安全风险。

  • ·窃听风险:黑客可以获知通信内容。
  • ·篡改风险:黑客可以修改通信内容。
  • ·冒充风险:黑客可以冒充他人身份参与通信。

 HTTPS协议
         HTTPS(HyperText Transfer Protocol over Secure Socket Layer),它的基础是SLL/TLS,既在HTTP下加入了SSL/TLS层。HTTPS通过安全传输机制进行传送数据,这种机制可以保护网络传送的所有数据的隐秘性与完整性。
它的过程大致是先进行握手流程建立https连接(明文传输),再进行真正的数据传输(加密传输)。

Web安全基础之会话技术简介

会话技术
        由于HTTP是无状态协议,所以HTTP协议无法记住客户端信息。web应用为执行各种有用的功能,应用程序需要追踪每名用户通过不同的请求与应用程序交互的状态。例如,一个购物应用程序允许用户浏览产品目录、往购物车内添加商品、查看并更新购物车内容、结账并提供个人与支付信息。
为实现这种功能,服务端生成一组在用户提交各种请求过程中代表状态的数据,这些数据通常保存在一个叫会话的服务端结构中。会话包含了cookie与session。
session
         由于HTTP协议无状态,服务端无法识别哪个用户操作的,所以服务端要为特定的用户创建特定的session,用于标识这个用户,并跟踪用户,这样才知道该用户的购物车里面有几本书。session是保存在服务端的,是唯一标识。
cookie 
         服务端通过cookie识别特定的客户,每次HTTP请求的时,客户端都会发送相应的Cookie信息到服务端。实际上大多数的应用都是用cookie)来实现session跟踪的,第一次创建session的时候〉服务端会在HTTP协议中告诉客户端,需要在 Cookie里面记录一个Session ID,以后每次请求把这个会话ID发送到服务器,服务器即可识别。

生成方式


 

 登录流程

WEB应用是如何判断用户是否登录的?
      1、当用户提交的帐号密码正确后,服务端会使用SESSION将用户信息存储到服务端。
并将SESSIONID
以SETCOOKIE的形式返回给客户端。
       2、当用户第二次访问站点时,会自动带上cOOKIE信息,那么服务端会根据cooKIE中的SESSIONID进行匹配数据。
a.如果存在数据,则说明已经登录过,为登录状态。

b.如果不存在数据,则说明没有登录,为未登录状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值