深入理解web安全攻防策略,看完这一篇就够了

news2024/11/17 16:40:48

前言

互联网时代,数据安全与个人隐私信息等受到极大的威胁和挑战,本文将以几种常见的攻击以及防御方法展开分析。

1. XSS (跨站脚本攻击)

定义:通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的HTML标签或JavaScript进行的一种攻击 可造成的主要影响:

  • 利用虚假输入表单骗取用户个人信息。
  • 利用脚本窃取用户的Cookie值,被害者在不知情的情况下,帮助攻击者发送恶意请求。

原理:恶意攻击者往 Web 页面里插入恶意可执行网页脚本代码,当用户浏览该页之时,嵌入其中 Web 里面的脚本代码会被执行,从而可以达到攻击者盗取用户信息或其他侵犯用户安全隐私的目的

在这里插入图片描述

如上图所示,网页URL输入一段包含js脚本的代码,在页面HTML中会获取url传参 keyword,并直接塞入到网页中直接执行,且参数可能会直接传到后台服务器中保存,后面再取到该参数时候又会执行脚本。整个过程中我们可以发现该漏洞产生的原因:1.输入的参数未经过安全过滤;2.恶意脚本被输出到网页;3.用户浏览器执行了恶意脚本。

1.1 反射性XSS攻击

特征:

  • 不经过服务器存储,直接通过 HTTP 的 GET 和 POST 请求就能完成攻击,直接拿到用户隐私数据。
  • 攻击者需要诱骗用户点击,用户点击相关链接才能发起
  • 用来盗取用户敏感保密信息
1.2 存储型XSS攻击

一般在前端 Form 表单提交等交互功能,如文章留言,评论信息等。黑客利用的 XSS 漏洞,将输入内容提交进入数据库持久保存,当前端页面获得后端从数据库中注入脚本代码时,恰好将其渲染执行。如下图我们在掘金评论区输入恶意脚本(掘金社区做了校验处理,该评论是无法提交的)。
在这里插入图片描述

攻击成功需要同时满足以下几个条件:

  • POST 请求提交表单后端没做转义直接入库。
  • 后端从数据库中取出数据没做转义直接输出给前端。
  • 前端拿到后端数据没转义直接渲染成 DOM。
1.3 XSS攻击的防御策略
  1. 请求头部 Content-Security-Policy 策略:CSP 本质上就是通过建立白名单告诉浏览器哪些外部资源可以加载和执行。例如:只允许加载本站资源(Content-Security-Policy: default-src ‘self’)、只允许加载 HTTPS 协议图片(Content-Security-Policy: img-src https://* )、允许加载任何来源框架(Content-Security-Policy: child-src ‘none’)等等,只要配置了正确的规则,那么即使网站存在漏洞,攻击者也不能执行它的攻击代码,并且 CSP 的兼容性也不错。
  2. 转义字符:用户的输入永远不可信,最普遍的做法就是转义输入输出的内容,对于引号、尖括号、斜杠等符号进行转义,如下方法:
function escapeHtml(html) {
  html = html.replace(/&/g, '&');
  html = html.replace(/</g, '&lt;');
  html = html.replace(/>/g, '&gt;');
  html = html.replace(/"/g, '&quto;');
  html = html.replace(/'/g, '&#39;');
  html = html.replace(/`/g, '&#96;');
  html = html.replace(/\//g, '&#x2F;');
  return html;
}


但是对于类似富文本,显然不能通过上面的办法来转义所有字符,因为这样会把需要的格式也过滤掉。所以通常采用白名单过滤的办法,如下所示,示例使用了 js-xss 来实现,可以看到在输出中保留了 h1 标签且过滤了 script 标签

const xss = require('xss')
let html = xss('<h1 id="title">XSS Demo</h1><script>alert("xss");</script>')
console.log(html)  // <h1>XSS Demo</h1>&lt;script&gt;alert("xss");&lt;/script&gt;


  1. HttpOnly Cookie:Web应用程序在设置cookie时,将其属性设为HttpOnly,就可以避免该网页的cookie被客户端恶意JavaScript窃取,保护用户cookie信息。

2. CSRF(跨站请求伪造)

定义:利用用户已登录的身份,在用户毫不知情的情况下,以用户的名义完成非法操作。

2.1 CSRF攻击的原理

在这里插入图片描述

根据上面的原理图,可以知道完成 CSRF 攻击必须要有三个条件:

  • 用户已经登录了站点 A,并在本地记录了 cookie
  • 在用户没有登出站点 A 的情况下(也就是 cookie 生效的情况下),访问了恶意攻击者提供的引诱危险站点 B (B 站点要求访问站点A)。
  • 站点 A 没有做任何 CSRF 防御策略
2.2 CSRF攻击的防御策略

防范 CSRF 攻击的思路:1. Get 请求不对数据进行修改;2. 不让第三方网站访问到用户 Cookie;3. 阻止第三方网站请求接口;4. 请求时附带验证信息,比如验证码或者 Token。

  1. 设置 SameSite 属性:对 Cookie 设置 SameSite 属性,表示 Cookie 不随着跨域请求发送,可以很大程度减少 CSRF 的攻击,但是该属性目前并不是所有浏览器都兼容。Samesite 有两个属性值,分别是 Strict 和 Lax:当Samesite属性值设置为 Strict时被称为严格模式,表明这个 Cookie 在任何情况下都不可能作为第三方 Cookie,绝无例外;当Samesite属性值设置为 Lax被称为宽松模式,假如这个请求改变了当前页面或者打开了新页面并且同时是个GET请求,则这个Cookie可以作为第三方Cookie。
  2. 同源检测:CSRF大多来自第三方网站,那么我们就直接禁止外域(或者不受信任的域名)对我们发起请求。在HTTP协议中,每一个异步请求都会携带两个Header,用于标记来源域名:Origin 和 Referer。这种方法并非万无一失,使用Referer 值验证来源的的方法,相当于把安全性都依赖于第三方(即浏览器)来保障,从理论上来讲,这样并不是很安全。在部分情况下,攻击者可以隐藏,甚至修改自己请求的Referer。
  3. CSRF Token:CSRF攻击之所以能够成功,是因为服务器误把攻击者发送的带有真实cookie信息的请求当成了用户自己的请求。那么我们可以要求所有的用户请求都携带一个CSRF攻击者无法获取到的Token。服务器通过校验请求是否携带正确的Token,来把正常的请求和攻击的请求区分开,也可以防范CSRF的攻击。CSRF Token的防护策略分为以下三个步骤:
  • 用户打开页面,服务器用户生成一个Token(该Token通过加密算法对数据进行加密,一般Token都包括随机字符串和时间戳的组合),在提交时Token不能再放在Cookie中了,否则又会被攻击者冒用。为了安全起见Token最好还是存在服务器的Session中。
  • 在页面提交的请求中设置一个新的请求头属性,并且携带这个Token。
  • 当用户从客户端拿到Token再次提交给服务器的时候,服务器需要判断Token的有效性,验证过程是先解密Token,对比加密字符串以及时间戳,如果加密字符串一致且时间未过期,那么这个Token就是有效的。
  1. 启用验证码:应用程序和用户进行交互过程中,特别是账户交易这种核心步骤,强制用户输入验证码,才能完成最终请求。在通常情况下,验证码够很好地遏制CSRF攻击。但增加验证码降低了用户的体验,网站不能给所有的操作都加上验证码。所以只能将验证码作为一种辅助手段,在关键业务点设置验证码。

3. 点击劫持

定义:点击劫持是一种视觉欺骗的攻击手段。攻击者将需要攻击的网站通过 iframe 嵌套的方式嵌入自己的网页中,并将 iframe 设置为透明,在页面中透出一个按钮诱导用户点击。

  • 隐蔽性较高,骗取用户操作
  • “UI-覆盖攻击”
  • 利用iframe或者其它标签的属性
3.1 点击劫持的原理

如下代码展示的是一个静态页面,用iframe引入一个csdn地址通过设置透明度属性之后,肉眼是没法看见的。外层设置一个吸引人的img 图片,诱导用户点击,实际上会触发点击到iframe 内嵌的页面。下面的图中展示了设置不同透明度的情况下可以看见的真实页面内容。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>点击劫持</title>
</head>
<style>
    iframe {
        width: 1440px;
        height: 900px;
        position: absolute;
        top: -0px;
        left: -0px;
        z-index: 2;
        -moz-opacity: 0;
        opacity: 0;
        filter: alpha(opacity=0);
    }
    button {
        position: absolute;
        top: 500px;
        left: 1050px;
        z-index: 1;
        width: 90px;
        height: 40px;
    }
</style>
<body>
    <button>嗨,点我有福利哟 ~ ~</button>
    <img     src="https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fpic1.win4000.com%2Fwallpaper%2F2019-11-19%2F5dd3870a80b9c.jpg&refer=http%3A%2F%2Fpic1.win4000.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1665362005&t=e7270ce2a5b520cde3bd3f0f8835128e">
    <iframe src="https://www.csdn.net/" scrolling="no"></iframe>
</body>
</html>


在这里插入图片描述
在这里插入图片描述

3.2 点击劫持的防御策略
  1. X-FRAME-OPTIONSX-FRAME-OPTIONS是一个 HTTP 响应头,就是为了防御用 iframe 嵌套的点击劫持攻击。该响应头有三个值可选,分别是:
  • DENY,表示页面不允许通过 iframe 的方式展示
  • SAMEORIGIN,表示页面可以在相同域名下通过 iframe 的方式展示
  • ALLOW-FROM,表示页面可以在指定来源的 iframe 中展示

4. URL跳转漏洞

定义:借助未验证的URL跳转,将应用程序引导到不安全的第三方区域,从而导致的安全问题。

4.1 URL跳转漏洞的原理

黑客构建恶意链接(链接需要进行伪装,尽可能迷惑),发在QQ群或者是浏览量多的贴吧/论坛中。安全意识低的用户点击后,经过服务器或者浏览器解析后,跳到恶意的网站中。经常的做法是熟悉的链接后面加上一个恶意的网址,这样才迷惑用户。如下图:
在这里插入图片描述

4.2 URL跳转漏洞的防御策略
  1. referer的限制:如果确定传递URL参数进入的来源,我们可以通过该方式实现安全限制,保证该URL的有效性,避免恶意用户自己生成跳转链接
  2. 加入有效性验证Token: 保证所有生成的链接都是来自于我们可信域的,通过在生成的链接里加入用户不可控的Token对生成的链接进行校验,可以避免用户生成自己的恶意链接从而被利用,但是如果功能本身要求比较开放,可能导致有一定的限制。

5. SQL注入

攻击者利用SQL注入这个漏洞,可以访问或修改数据,或者利用潜在的数据库漏洞进行攻击。

5.1 SQL注入原理

我们通过如下例子来说明,前端表单提交的代码和后端的的sql语句如下所示:

<form action="/login" method="POST">
    <p>Username: <input type="text" name="username" /></p>
    <p>Password: <input type="password" name="password" /></p>
    <p><input type="submit" value="登陆" /></p>
</form>


let querySQL = `
    SELECT *
    FROM user
    WHERE username='${username}'
    AND password='${password}'
`;


但如果有一个恶意攻击者输入的用户名是 admin' --,密码随意输入,就可以直接登入系统了,这就是SQL注入,sql注入的代码如下:

SELECT * FROM user WHERE username='admin' --' AND password='xxxx'


在 SQL语句中,' --是闭合和注释的意思,-- 是注释后面的内容的意思,所以有效查询语句实际上是:

SELECT * FROM user WHERE username='admin'


5.2 SQL注入的危害
  • 获取数据库信息:管理员后台用户名和密码;获取其他数据库敏感信息:用户名、密码、手机号码、身份证、银行卡信息…… ;整个数据库:脱裤
  • 获取服务器权限
  • 植入shell,获取服务器权限,读取服务器敏感文件等
5.3 SQL注入的防御策略
  • 限制数据库的操作权限,给此用户提供仅仅能够满足其工作的最低权限,从而最大限度的减少注入攻击对数据库的危害
  • 后端代码检查输入的数据,严格限制变量的类型,例如使用正则表达式进行一些匹配处理。
  • 对进入数据库的特殊字符(',",\,<,>,&,*,; 等)进行转义处理,或编码转换。基本上所有的后端语言都有对字符串进行转义处理的方法,比如 lodash 的 lodash._escapehtmlchar 库。
  • 所有的查询语句建议使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到 SQL 语句中,即不要直接拼接 SQL 语句。

6. OS命令注入攻击

定义:通过Web应用,执行非法的操作系统命令达到攻击的目的。只要在能调用Shell脚本的地方就有存在被攻击的风险。倘若调用Shell时存在疏漏,就可以执行插入的非法命令。

危害:命令注入攻击可以向Shell发送命令,让Windows或Linux操作系统的命令行启动程序。也就是说,通过命令注入攻击可执行操作系统上安装着的各种程序。

6.1 OS命令注入的原理

黑客构造命令提交给web应用程序,web应用程序提取黑客构造的命令,拼接到被执行的命令中,因黑客注入的命令打破了原有命令结构,导致web应用执行了额外的命令,最后web应用程序将执行的结果输出到响应页面中。假如需要实现一个需求:用户提交一些内容到服务器,然后在服务器执行一些系统命令去返回一个结果给用户:

// 以 Node.js 为例,假如在接口中需要从 github 下载用户指定的 repo
const exec = require('mz/child_process').exec;
let params = {/* 用户输入的参数 */};
exec(`git clone ${params.repo} /some/path`);


如果 params.repo 传入的是 https://github.com/admin/admin.github.io.git 确实能从指定的 git repo 上下载到想要的代码。 但是如果 params.repo 传入的是 https://github.com/xx/xx.git && rm -rf /* && 恰好你的服务是用 root 权限起的,那就造成了服务器文件的丢失,OS命令攻击注入得逞。

6.2 OS命令注入的防御策略
  • 后端对前端提交内容进行规则限制(比如正则表达式)。
  • 在调用系统命令前对所有传入参数进行命令行参数转义过滤。
  • 不要直接拼接命令语句,借助一些工具做拼接、转义预处理,例如 Node.js 的 shell-escape npm包等。

7. DoS(Denial of Service)拒绝服务攻击

定义:DoS又被称为拒绝服务,造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务。该攻击通过网络协议实现的缺陷或直接通过野蛮手段残忍地耗尽被攻击对象的资源,使目标系统服务系统停止响应甚至崩溃,而在此攻击中并不包括侵入目标服务器或目标网络设备。

7.1 常见攻击手段
  • 缓冲区溢出攻击:最常见的 DoS 攻击,这个概念是向网络地址发送大量的流量。当程序写入超过缓冲区的边界时,就会产生所谓的“缓冲区溢出”。发生缓冲区溢出时,就会覆盖下一个相邻的内存块(覆盖相邻函数的栈帧),导致程序发生一些不可预料的结果。常见的防御策略如下:
  1. 地址空间随机化 —— 随机重新排列进程的关键数据区的地址空间位置。缓冲区溢出攻击通常依赖于了解重要的可执行代码的确切位置,地址空间的随机化可以使这种了解几乎不可能。
  2. 防止数据执行 —— 标记内存的某些区域(可执行或不可执行),防止漏洞利用运行不可执行区域中的代码。
  • ICMP泛洪(死亡ping):通过发送欺骗性数据包来利用配置错误的网络设备,这些数据包 ping 目标网络上的每台计算机,而不仅仅是一台特定的计算机。然后触发网络以放大流量。这种攻击也被称为死亡ping。由于使用ping工具很容易完成这种攻击,以至于它也成了这种攻击的首选武器,这也是这种攻击名字的由来。因此仅仅阻塞 ping 的使用并不能完全解决这个漏洞。预防死亡之ping的最好方法是对操作系统打补丁,使内核将不再对超过规定长度的包进行重组。如下代码就是简单的死亡ping攻击手段:
// -l 所指为IP结尾断点,65500 表示数据长度上限,-t 表示不停地ping目标地址
ping -l 65500 192.169.1.1 -t 


  • SYN flood:发送连接到服务器的请求,但未完成握手。直到所有打开的端口都被请求饱和。 如下图所示,发送请求到服务器但是最后却不完成握手,依次打开所有的请求端口直至饱和状态,造成网络崩溃: 在这里插入图片描述
    可以采取以下三种措施: 阻止发往该保护主机的后续连接请求、切断保护主机上的最老半连接会话、向 TCP Proxy 添加受保护 IP 地址
  • UDP泛洪 (UDP Flood):短时间内向特定目标不断发送 UDP 报文,致使目标系统负担过重而不能处理合法的传输任务,就发生了 UDP Flood。防御手段:
  1. 判断攻击包大小,如果是大包攻击就采用防止UDP碎片方法:可以根据攻击包大小设定包碎片重组大小,一般不小于1500。特殊极端情况下,可以丢弃所有UDP碎片。
  • 泪滴攻击(TearDrop):TCP/IP协议在数据传输过程中,对过大的数据会进行分包处理,传输到目的主机后再到堆栈中进行重组,为实现重组,一个分片数据包的偏移量和大小之和要同于下一个分片数据包的偏移量和大小之和,如果不同,则数据包重叠。当发送伪造的含有重叠偏移信息的分段包到目标主机时,被攻击主机试图将分段包重组时,由于分段数据的错误,接收这些数据包的机器因为TCP / IP碎片重组错误而无法重新组装,因此数据包相互重叠,导致目标网络设备崩溃。常见的防御策略如下:
  1. 收到分割封包时候进行分析,计算offset是否有误
  2. server应用最新或者尽可能使用最新操作系统
  3. 设置防火墙时对分段进行重组,而不是转发它们
  • IP欺骗(IP Spoofing DoS): 行动产生的IP数据包为伪造的源IP地址,以便冒充其他系统或发件人的身份。这是一种骇客的攻击形式,骇客使用一台计算机上网,而借用另外一台机器的IP地址,从而冒充另外一台机器与服务器打交道。防御方法:
  1. 可在设备上开启单播逆向路径转发(URPF)功能
  2. 可在设备上开启IP源防护(IPSG)功能
7.3 DDoS(Distributed denial of service attack)分布式拒绝服务攻击

定义:DDoS(Distributed denial of service attack)分布式拒绝服务攻击:黑客利用工具集合许多的网络带宽来同时对同一个目标发动大量的 DoS(Denial of Service)攻击,并可以借此躲避追踪的手段。

原理:一个完整的DDoS攻击体系由攻击者、主控端、代理端和攻击目标四部分组成。主控端和代理端分别用于控制和实际发起攻击,其中主控端只发布命令而不参与实际的攻击,代理端发出DDoS的实际攻击包。这样攻击者可以逃避追踪,每一个攻击代理主机都会向目标主机发送大量的服务请求数据包,这些数据包经过伪装无法识别它的来源,而且这些数据包所请求的服务往往要消耗大量的系统资源,造成目标主机无法为用户提供正常服务。甚至导致系统崩溃。

在这里插入图片描述

如果你对网络安全入门感兴趣,那么你点击这里👉CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

如果你对网络安全感兴趣,学习资源免费分享,保证100%免费!!!(嘿客入门教程)

👉网安(嘿客)全套学习视频****👈

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

👉网安(嘿客红蓝对抗)所有方向的学习路线****👈

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

在这里插入图片描述

学习资料工具包

压箱底的好资料,全面地介绍网络安全的基础理论,包括逆向、八层网络防御、汇编语言、白帽子web安全、密码学、网络安全协议等,将基础理论和主流工具的应用实践紧密结合,有利于读者理解各种主流工具背后的实现机制。

在这里插入图片描述

面试题资料

独家渠道收集京东、360、天融信等公司测试题!进大厂指日可待!
在这里插入图片描述

这份完整版的网络安全(客)全套学习资料已经上传至CSDN官方,朋友们如果需要点击链接CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享也可扫描下方微信二v码获取网络工程师全套资料【保证100%免费】

在这里插入图片描述

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

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

相关文章

王道考研数据结构代码总结(第八章)

目录 排序插入排序直接插入排序折半插入希尔排序链表的插入排序插入类排序总结 交换排序冒泡排序快速排序 选择排序简单选择排序堆排序堆的插入堆的删除 归并排序基数排序 本文包含王道考研讲课中所涉及的数据结构中的所有代码&#xff0c;当PPT代码和书上代码有所区别时以咸鱼…

“智慧”北京,人工智能引领“新风尚”

原创 | 文 BFT机器人 北京时间&#xff0c;9月15日&#xff0c;北京人工智能产业峰会暨中关村科学城科创大赛颁奖典礼在北京中关村举行&#xff0c;同时惠阳还举行了“中关村人工智能大模型产业集聚区”启动建设的揭牌仪式。 此次大会围绕北京AI产业的建设与发展&#xff0c;各…

一篇文章彻底弄懂单调栈!!!

前言 最近梳理完中间件后荔枝一边学项目一边刷算法&#xff0c;一刷了代码随想录中的字符串、双指针、栈和队列以及单调栈。其中感觉比较有难度的还是单调栈嘿&#xff0c;因此有必要(水)梳理一篇文章来复盘一下单调栈的相关知识~ 希望复盘完后可以有所收获&#xff01; 文章目…

某音网页端 X-Bogus 参数

逆向目标 目标&#xff1a;某音网页端用户信息接口 X-Bogus 参数 接口&#xff1a;aHR0cHM6Ly93d3cuZG91eWluLmNvbS9hd2VtZS92MS93ZWIvdXNlci9wcm9maWxlL290aGVyLw 什么是 JSVMP&#xff1f; JSVMP 全称 Virtual Machine based code Protection for JavaScript&#xff0c;即 …

根据条件关闭软件

使用下载工具时&#xff0c;经常出现磁盘空间已满&#xff0c;无法下载的情况。 使用shell写一个监控&#xff0c;每2分钟执行一次。判断当前磁盘的空间&#xff0c;低于2G时&#xff0c;关闭下载软件。 获取空间大小 ➜ ~ df -h …

如何运用API接口获取淘宝1688京东商品数据:从入门到实践

一、引言 随着电子商务的飞速发展&#xff0c;许多电商平台提供了API接口&#xff0c;允许开发者获取商品数据&#xff0c;以创建各种创新的应用。本文将详细介绍如何使用API接口获取商品数据&#xff0c;并通过代码示例进行演示。 二、API接口概述 1.API接口定义 API&…

【校招VIP】数据库理论之数据库范式

考点介绍&#xff1a; 范式是指关系数据库中的一种数据结构设计规范&#xff0c;用于规范关系型数据库中数据的存储方式&#xff0c;目的是为了消除冗余数据&#xff0c;减少数据的重复性&#xff0c;提高数据的一致性、完整性和正确性&#xff0c;避免数据的不一致性和冲突 …

三相组合式过电压保护器试验

三相组合式过电压保护器试验 试验目的 三相组合式过电压保护器主要分为有带串联间隙过压保护器和无间隙过压保护器两大类&#xff0c;其试验项目内容要求分别使用高压工频交流和高压直流电源。 三相组合式过电压保护器试验&#xff0c;主要是为了及早发现设备内部绝缘受潮及…

华为云云耀云服务器L实例评测|云耀云服务器L实例部署Dashdot服务器仪表盘

华为云云耀云服务器L实例评测&#xff5c;云耀云服务器L实例部署Dashdot服务器仪表盘 一、云耀云服务器L实例介绍二、Dashdot介绍2.1 Dashdot简介2.2 开发环境要求2.3 Yarn介绍 三、本次实践介绍3.1 本次实践简介3.2 本次环境规划 四、检查服务器环境4.1 购买云耀云服务器L实例…

Android中的缓存策略:LruCache和DiskLruCache

Android中的缓存策略&#xff1a;LruCache和DiskLruCache 导言 本篇文章主要是介绍Android中内置的两个缓存类的原理。所谓缓存&#xff0c;就是将获取的数据保存下来以便下次继续使用&#xff0c;这种技术尤其在网络请求和图片加载中有用&#xff0c;可以显著地提升App的性能…

SSM - Springboot - MyBatis-Plus 全栈体系(十三)

第三章 MyBatis 一、MyBatis 简介 1. 简介 MyBatis 最初是 Apache 的一个开源项目 iBatis, 2010 年 6 月这个项目由 Apache Software Foundation 迁移到了 Google Code。随着开发团队转投 Google Code 旗下&#xff0c; iBatis3.x 正式更名为 MyBatis。代码于 2013 年 11 月迁…

大模型训练显存优化推理加速方案

当前的深度学习框架大都采用的都是fp32来进行权重参数的存储&#xff0c;比如Python float的类型为双精度浮点数fp64&#xff0c;pytorch Tensor的默认类型为单精度浮点数fp32。随着模型越来越大&#xff0c;加速训练模型的需求就产生了。在深度学习模型中使用fp32主要存在几个…

R语言贝叶斯MCMC:GLM逻辑回归、Rstan线性回归、Metropolis Hastings与Gibbs采样算法实例...

原文链接&#xff1a;http://tecdat.cn/?p23236 在频率学派中&#xff0c;观察样本是随机的&#xff0c;而参数是固定的、未知的数量&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 相关视频 什么是频率学派&#xff1f; 概率被解释为一个随机过程的许多观测…

Spark SQL【电商购买数据分析】

Spark 数据分析 &#xff08;Scala&#xff09; import org.apache.spark.rdd.RDD import org.apache.spark.sql.{DataFrame, SparkSession} import org.apache.spark.{SparkConf, SparkContext}import java.io.{File, PrintWriter}object Taobao {case class Info(userId: Lo…

最该考的高含金量计算机证书盘点(文末领资料)

谈到大学规划&#xff0c;不少过来人都会建议萌新们在课余时间多多考证&#xff0c;俗话说的好“证多不压身”&#xff0c;今天我们就来聊一聊&#xff0c;计算机相关专业的大学生&#xff0c;有哪些证书可以考&#xff1f; 首先&#xff0c;不得不提的就是全国计算机二级考试…

web:[ACTF2020 新生赛]Exec

背景知识 命令执行漏洞 linux命令 题目 打开题目&#xff0c;页面显示的是一个ping 尝试一下 查看源代码发现 尝试ping一下百度 由题目名可知这道题关于exec&#xff08;命令执行&#xff09;&#xff0c;这里需要联想到可以多条命令执行 输入baidu.com;ls 尝试;号是否能够…

从统计语言模型到预训练语言模型---预训练语言模型(Transformer)

预训练模型的概念在计算机视觉领域并不陌生&#xff0c; 通常我们可以在大规模图像数据集上预先训练出一个通用 模型&#xff0c; 之后再迁移到类似的具体任务上去&#xff0c; 这样在减少对图像样本需求的同时&#xff0c; 也加速了模型的开发速度。计 算机视觉领域采用 Image…

互联网医院系统|互联网医院软件功能与广阔应用领域

随着科技的不断进步和人们对健康需求的提高&#xff0c;互联网医院已经成为当今医疗领域的热点话题。作为一种融合了互联网和医疗服务的创新模式&#xff0c;互联网医院带来了许多便利和改变。本文将详细介绍互联网医院的软件功能、应用范围以及未来的发展趋势。 互联网医院通过…

【计算机毕业设计】基于SpringBoot+Vue电影在线订票系统的开发与实现

博主主页&#xff1a;一季春秋博主简介&#xff1a;专注Java技术领域和毕业设计项目实战、Java、微信小程序、安卓等技术开发&#xff0c;远程调试部署、代码讲解、文档指导、ppt制作等技术指导。主要内容&#xff1a;毕业设计(Java项目、小程序等)、简历模板、学习资料、面试题…

机器学习笔记:概念对比——损失函数,代价函数,目标函数

损失函数 Loss Function 通常是针对单个训练样本而言 给定一个模型输出 和一个真实值y &#xff0c;损失函数是 代价函数 Cost Function 通常是针对整个训练集&#xff08;或者在使用 mini-batch gradient descent 时一个 mini-batch&#xff09;的总损失 目标函数 Objec…