Web安全:概述_逆向和Web安全

Web安全:概述_逆向和Web安全文章目录浏览器安全同源策略多进程结构沙箱恶意网址拦截跨站脚本攻击XSS定义示例分类浏览器安全同源策略浏览器的同源策略,限制了来自不同源的“document”或脚本对当前“document”的读取或修改。影响源的因素有:host、子域名、端口、协议等。多进程结构将浏览器的各个功能模块分开,各个浏览器实例分开,这样若一个进程崩溃,也不会影响到其他进程。GoogleChrome是第一个采取多进程架构的浏览器,其主要进程包括:浏览器进程、渲染进程、插件进程、扩展进程等。其中插件进程如flash、ja

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

浏览器安全

同源策略

浏览器的同源策略,限制了来自不同源的“document”或脚本对当前“document”的读取或修改。

影响源的因素有:host、子域名、端口、协议等。

多进程结构

将浏览器的各个功能模块分开,各个浏览器实例分开,这样若一个进程崩溃,也不会影响到其他进程。

Google Chrome是第一个采取多进程架构的浏览器,其主要进程包括:浏览器进程、渲染进程、插件进程、扩展进程等。其中插件进程如flash、java、pdf等与浏览器进程严格隔离,不会相互影响。

沙箱

设计目的是为了让不可信任的代码独立运行在一定的环境中,限制不可信任的代码访问隔离区之外的资源,如果一定要跨过沙箱的边界进行数据交换,只能通过指定的数据通道(如封装好的API)来进行,而在此过程中会对请求的合法性进行严格的检查。

恶意网址拦截

常见的恶意网址有两种;挂马网站和钓鱼网站。挂马网站通常包含有恶意的脚本如JavaScropt或flash,会利用浏览器的漏洞执行shellcode,在用户电脑中植入木马。钓鱼网站会通过模仿正常网站来诱骗用户。

恶意网址拦截主要是通过浏览器厂商建立黑名单实现的,现在还引入了EVSSL证书。

跨站脚本攻击XSS

定义

XSS通常指黑客通过HTML注入篡改了网页,插入了恶意脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。

示例

假设一个php页面把用户输入的参数直接回显到页面上
在这里插入图片描述
若用户以GET请求访问此页面
在这里插入图片描述
则页面源代码中将会出现
在这里插入图片描述
如果攻击者伪造一个URL如:
在这里插入图片描述则页面会解析提交的<script>标签,从而执行alert

在这里插入图片描述

分类

  • 反射型XSS:把用户提交的数据“反射“给浏览器,也叫做非持久型XSS,如上例。
  • 存储型XSS:恶意脚本被保存在服务器端的某页面,所有访问此页面的用户都会在浏览器中执行恶意脚本。
  • DOM Based XSS:通过修改页面的DOM节点形成的XSS。

跨站点请求伪造CSRF

本质

服务端编写的不太合理,其重要操作的很多参数都是可以被攻击者获取和伪造的。

示例

在这里插入图片描述
攻击者欺骗用户(博客主)访问此链接,若用户使用Firefox2浏览器,其加载img标签时向搜狐的服务器发起了一次带参数的GET请求,而Firefox2浏览器默认策略是允许发送第三方Cookie的,因此搜狐认为此请求是用户行为,则将文章删除。

防御

对于开发者来说,使用验证码是最简洁有效的防御方法,它强制用户作出一定操作时必须作出确认,可有效防范CSRF。但从用户体验的角度来看,验证码更应该被作为一种辅助手段。

此外,检查Referer也能在一定程度上防御CSRF,但问题在于,服务器并不是在所有情况下都能取得Referer的,如用户出于隐私保护的考虑限制了Referer的发送。

目前最为通用的方法是采用Token。如在上例中新增一个随机参数Token,正常情况下,此参数是由服务器与客户端共同持有的,可以放在用户session或浏览器的Cookie中,服务器收到请求时校验表单中的Token与session或Cookie中的Token是否一致,不一致则认为是非法请求。

点击劫持

定义

点击劫持是一种视觉上的欺骗手段,攻击者使用一个透明的iframe覆盖在网页上,然后欺骗用户在该网页上点击,从而诱导其完成一些特定操作。

防御

针对传统的基于iframe的点击劫持,可以通过禁止iframe嵌套进行防御

SQL注入

必要条件

  • 用户能够控制SQL查询参数的输入。
  • 服务器端将用户提交的参数拼接到SQL语句中去执行。

常见手段

  • 盲注:构造简单的条件语句,根据返回页面是否发生变化来判断SQL语句是否得到执行。
  • TimmingAttack:利用BENCHMARK()函数,如果恶意语句得到执行,则结果返回的时间会比平时长很多。

防御

  • 检查数据类型:如严格的检查邮箱格式、时间日期等。
  • 使用黑名单对用户输入进行过滤:有一定效果但是
    理论上来说总能被绕过。
  • 使用预编译语句:将用户提交的数据只作为SQL查询的参数而非SQL语句的一部分,这种方法能从根本上防范注入。

文件上传

必要条件

  • 文件上传后不会作改动。
  • 上传的文件能被web容器解释执行。
  • 用户能访问到这个文件。

常见手段

  • 上传web脚本语言,被服务器的web容器解释执行。
  • 上传Flash的策略文件后,攻击者可控制Flash在该域下的行为。
  • 上传病毒木马等,攻击者欺骗用户、管理员下载执行。
  • 上传包含脚本的图片,利用浏览器漏洞进行执行。

绕过

若服务器进行了文件后缀检查,可以使用%00截断的方法:如服务器只允许上传jpg文件,则攻击者上传一个php文件,拦截修改POST包,将其重命名为xxx.php[%00].jpg,可以绕过后缀检查,在服务器端处理时,很多语言会将[%00]作为终止符,从而进行截断,最终上传的文件名变为了xxx.php

若服务器进行了文件头检查,如允许上传jpg文件,但会检查文件的前10个字节来判断,则攻击者可以伪造一个合法的文件头,而将php代码附在合法的文件头之后。如果web server将此文件当做PHP文件解析,则恶意代码可得到执行。

防御

  • 文件上传的目录设置为不可执行:将其作为静态文件处理。
  • 对图片进行压缩、水印处理:可以有效破坏其中的恶意代码。
  • 使用随机生成的文件名:防止用户能访问到文件。

DDoS

定义

Distributed Denial of Service,分布式拒绝服务攻击,是指利用合理的请求造成资源过载,导致服务器不可提供服务的攻击手段。

分类

DDoS分为两类:网络层的DDoS和应用层DDoS。

网络层DDoS是指利用TCP/IP协议族的一些特征,通过大量发包将带宽占满,快速消耗目标主机资源,造成网络堵塞和服务不可用,比如SYN flood、UDP flood、ICMP flood。这类攻击比较简单,用带DDoS FPGA芯片的硬件很容易识别和防护,云服务商也提供一定容量的网络DDoS防护能力。网络层DDoS由于收益小、易被识别和拦截,价值并不大,通常被用作应用层DDoS攻击前的伪装和掩护。

应用层DDoS是指攻击者通过代理服务器或者僵尸网络向攻击目标发送大量的高频合法请求, 同样达到快速消耗目标主机资源、造成网络堵塞和服务不可用的目的。常见的应用层DDoS攻击包括DNS flood、HTTP慢连接攻击、CC攻击。需要注意的是,这些请求都是合法的,因此很难被识别和过滤。

作者:F5 Networks
链接:https://www.zhihu.com/question/19581905/answer/1982518998
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

示例

SYN flood:利用TCP三次握手的缺陷,使用大量肉鸡对服务器发送一个SYN后便不再回复,则服务器需要消耗大量的资源维持并处理这些半连接,导致不能正常提供服务。

防御

  1. 蜜罐引流:将攻击流量引流到蜜罐,进行攻击溯源和诱捕。

  2. 客户端挑战:返回js来检测是正常的客户端还是攻击脚本。

  3. 人机识别:返回验证码来检测是正常用户还是伪装成用户的BOT。

  4. 请求限流限速或彻底阻断。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/194066.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 【技巧帖】关于Mac如何内录电脑内部声音[通俗易懂]

    【技巧帖】关于Mac如何内录电脑内部声音[通俗易懂]最近见到好多人想内录Mac的声音无奈自带QuickTime或者其他录屏软件不能内录,那我来稍微说一下我当时折腾找出的方法。大神们应该都知道吧。【soundflower】!这是一个神奇的插件,可以将电脑的音频从电脑内部发出来【不是到外部】,这样在录入声音时,设备选择soundflower(2ch),就可以录入电脑声音了!下载地址:Soundflower-2.0b2.dmg步骤如下:1.安装好后,来到…

  • 775针cpu性能最好的_英特尔775针cpu性能排行

    775针cpu性能最好的_英特尔775针cpu性能排行排名型号评分1IntelCorei7995X@3.60GHz10,8622IntelXeonW3690@3.47GHz10,8283IntelCorei7990X@3.47GHz10,6544IntelCorei7980X@3.33GHz10,6075IntelXeonX5690@3.47GHz10,3146IntelCorei7980@3….

  • linux oracle11g安装步骤_oracle11g32位安装

    linux oracle11g安装步骤_oracle11g32位安装目录Oracle11g安装准备工作…1Oracle11g下载地址:…1Oracle11g联机文档:…1Oracle11gR2数据库安装硬件配置要求目录Linux操作系统中Oracle11g数据库安装过程图文详解Oracle11g下载地址:选择需要的oracle安装文件下载Oracle11g联机文档:可以下载其PDF文档参考(其中的有关Linux安装向导是…

  • NIO Reactor模型

    NIO Reactor模型NIOReactor模型Reactor三种模型单线程模型多线程模型主从多线程模型Netty线程模型1线程组2ChannelPipeline3异步非阻塞Reactor模式是基于事件驱动开发的,服务端程序处理传入多路请求,并将它们同步分派给请求对应的处理线程,Reactor模式也叫Dispatcher模式,即I/O多路复用统一监听事件,收到事件后分发(Dispatch给某进程),这是编写高性能网络服务器的必备技术之一。Reactor模式以NIO为底层支持,核心组成部分包括Reactor和Ha

  • eclipse中各种代码的注释快捷键

    eclipse中各种代码的注释快捷键Java文件:注释和取消注释的快捷键都是:CTRL+/或Shift+Ctrl+CJS文件:注释和取消注释的快捷键都是:CTRL+/或Shift+Ctrl+Cxml文件:注释:选中要注销的代码CTRL+SHIFT+/或选中代码按Shift+Ctrl+C取消注释:CTRL+SHIFT+\或Shift+Ctrl+Cjsp文件:ht…

  • 小记 HTML5 file对象

    小记 HTML5 file对象

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号