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)


相关推荐

  • 网页中的兼容性视图设置在哪_找不到兼容性视图设置

    网页中的兼容性视图设置在哪_找不到兼容性视图设置浏览器兼容性视图设置在浏览器右上角的设置里,设置方法如下:方法11、首先,打开电脑,找到电脑桌面上的IE浏览器,并点击打开,打开后,进入任一网页,找到页面右上方的的设置图标,如下图所示,点击。2、点击这个设置图标后,会展开下图所示的选项,请找到下方的F12开发人员工具(L),并点击进入。3、这时候,浏览器下方会出现一个设置框,找到“浏览器模式”选项,点击,然后找到下方的“兼容性视图”勾选并确认,I…

  • 数据结构单链表的算法描述_数据结构创建单链表及其实现

    数据结构单链表的算法描述_数据结构创建单链表及其实现一、什么是链表链表是一种数据结构,跟数组不同,链表不需要连续的内存空间,而是通过指针将零散的内存块连接起来。因此,链表的查找需要通过节点按顺序遍历,而增加与删除通过只需要操作指针指向,这也造成了相

  • nvaicat15激活码【中文破解版】

    (nvaicat15激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html0YQJ1128OW-eyJsaWNlbnNlSWQi…

  • HTML+CSS制作二级菜单栏

    HTML+CSS制作二级菜单栏今天我们来练习一下二级菜单栏,说实话比较简单,但是自己一个人写的时候错误百出,逻辑混乱,于是乎网上找了几个案例,借鉴了一下思路,才整明白,鄙人确实不才,哈哈!效果图附上:首先:我已链接了外部样式重置,所以无需自己亲自写:reset.css网上有很多,我用的是下面这个,免费分享给大家,永久有效哦!链接:https://pan.baidu.com/s/1doPA17vy–Qt…

  • Solr集成Tomcat

    Solr集成Tomcat

  • 部署和使用kibana

    部署和使用kibana

    2021年11月24日

发表回复

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

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