跳到正文

针对 Web 应用的攻击

頻出约 50 分钟7 个术语过去问 11 题

本单元目标

  • 能按非法处理或损害发生在何处,区分这 7 种攻击。
  • 能根据攻击者送入的东西和被利用的弱点,分辨名称相似的攻击。
  • 能说明先确认收到的输入再使用、更新软件等基本对策分别对哪些攻击有效。
术语总表(7 个)
术语一句话非法处理·损害发生的位置被利用的东西
クロスサイトスクリプティング利用网站的弱点,在浏览者的浏览器中运行攻击者的脚本浏览者的浏览器把收到的文字原样显示的设计
クロスサイトリクエストフォージェリ诱使已登录的用户打开陷阱页面,向正规网站发送其无意的请求正规网站的服务器保持登录的状态
クリックジャッキング叠上设为透明的他站页面,诱使用户按下无意的按钮用户已登录的服务页面的外观(透明叠加)
ドライブバイダウンロード只是打开页面,就在不知不觉中被植入恶意软件用户的 PC 或智能手机浏览器或扩展功能的漏洞
SQLインジェクション在输入框中混入 SQL 片段,使数据库执行意外的命令数据库把输入直接拼进命令语句的设计
ディレクトリトラバーサル利用返回上级的路径写法,读取未公开的文件服务器上的文件不检查所指定文件名的设计
バッファオーバーフロー攻撃发送超出预留区域的数据,使程序出现意外行为受攻击的程序(内存)不检查输入长度的设计

术语

クロスサイトスクリプティング跨站脚本

在术语表中打开 クロスサイトスクリプティング

跨站脚本(クロスサイトスクリプティング,XSS)是利用网站处理输入时的弱点,让打开该页面的用户在自己的浏览器中运行攻击者的脚本的攻击。

  1. 发布夹带脚本的文字
  2. 网站原样显示在页面上
  3. 在浏览者的浏览器中运行
  4. 登录状态信息等被发给攻击者

运行起来的脚本把用于保持登录状态的信息等发送给攻击者。

4 / 4

脚本是指嵌入网页、在浏览器上运行的小程序。有的网站对留言等收到的文字不做无害化处理(转换成无法作为脚本运行的形式)就写进页面,混在文字里的脚本便会在浏览者的屏幕上运行起来。运行的脚本会把用于保持登录状态的 cookie(网站让浏览器保存的小块数据)发给攻击者,从而造成损害。

类比就像在店里的留言板上混进一个机关,谁读了留言,会员卡就会从谁的口袋里被抽走。机关起作用的地方不在留言板,而在读留言的顾客手边。

记法XSS 中的 X 是表示 cross(交叉)的简写,这样写是为了不和样式表 CSS 混淆。

考点

  • 常考跨站脚本(クロスサイトスクリプティング)攻击的是不对用户输入做无害化处理就输出到页面的网站弱点,让打开该页面的人的浏览器运行脚本。
  • 常考脚本一旦盗走 cookie,用于保持登录状态的信息就会落入攻击者手中,进而导致在 Web 服务上被冒充(成りすまし)或账户被盗用。
  • 常考能嵌入脚本的不只是网页。HTML 格式的电子邮件(HTML 形式の電子メール)中也能嵌入脚本,因此显示邮件时存在恶意脚本运行的风险。

该术语的过去问 2 题 クロスサイトスクリプティング

クロスサイトリクエストフォージェリ跨站请求伪造

在术语表中打开 クロスサイトリクエストフォージェリ

跨站请求伪造(クロスサイトリクエストフォージェリ,CSRF)是诱使仍登录着正规网站的用户打开陷阱页面,让其向该正规网站发送本人并无此意的请求(向服务器提出的处理要求)的攻击。

  1. 已登录正规网站
  2. 打开陷阱页面
  3. 浏览器向正规网站发出请求
  4. 服务器当作本人的操作处理

正规网站的服务器分辨不出这是否是本人的请求,便照常处理了。

4 / 4

陷阱页面里藏有机关,只要打开页面,就会向正规网站发出发帖或更改设置的请求。由于请求来自已登录用户的浏览器,正规网站的服务器无法将其与本人的操作区分开,便会照常处理。对策之一是由网站核对一个暗号(令牌),用来确认请求是否从正规页面发出。

类比就像有人偷偷把一张假申请书塞进本人所派跑腿者携带的文件里。跑腿者原样交到窗口,窗口因为文件是本人的跑腿者送来的,分不清真假,就当作本人的申请受理了。

记法フォージェリ就是 forgery(伪造)。这种攻击伪造的是发给服务器的请求。

考点

  • 易混在 CSRF 中执行非法处理的是正规网站的服务器;而 XSS 是在用户的浏览器里运行攻击者的脚本,两者发生非法处理的位置不同。

「跨站脚本」与「跨站请求伪造」的区别

比较点跨站脚本跨站请求伪造
攻击者送入的东西在浏览器中运行的脚本以本人名义伪造的请求
关键发生非法处理的位置浏览者的浏览器正规网站的服务器
被利用的东西不做无害化处理就显示文字的设计保持登录的状态

クリックジャッキング点击劫持

在术语表中打开 クリックジャッキング

点击劫持(クリックジャッキング)是把另一个网站的页面设为透明后叠在陷阱页面上,诱使用户点击本不想按的按钮的攻击。

  1. 叠上透明的他站页面
  2. 以为按的是看得见的按钮
  3. 执行看不见页面上的操作

实际按下的是叠在上面、看不见的页面上的按钮,相应的操作随即执行。

3 / 3

用户看到的只有陷阱页面的按钮,实际按下的却是叠在上面、看不见的页面上的按钮。结果,在已登录的服务中,设置被更改、公开范围被切换等操作会在本人不知情时完成。对策之一是进行设置,不让自己网站的页面被嵌入其他网站中叠加显示。

类比就像在指示牌的按钮前竖一块装着别的开关的透明板,想按指示牌按钮的人,按下的其实是板上的开关。

记法ジャッキング与 hijack(劫持)中的 jack 是同一个词。被劫持的是用户的点击。

考点

  • 易混点击劫持(クリックジャッキング)利用的是用户本人的点击;而 CSRF 只要打开页面,浏览器就会发出请求,两者劫持操作的方式不同。

ドライブバイダウンロード路过式下载

在术语表中打开 ドライブバイダウンロード

路过式下载(ドライブバイダウンロード)是用户只是打开网页,就在不知不觉中被送入恶意软件(非法程序)而遭感染的攻击。

  1. 在页面中植入非法程序
  2. 用户打开页面
  3. 弱点被利用而感染

浏览器等的弱点被利用,用户什么都没操作,恶意软件就已侵入。

3 / 3

攻击者事先在被篡改的正规网站或自己准备的陷阱网站中植入非法程序。用户打开该页面时,浏览器或插件(浏览器的扩展功能)的漏洞(安全上的弱点)被利用,即使没有打开文件等操作也会被感染。更新操作系统和浏览器、堵住漏洞,是主要的防御手段。

类比就像只是从一户人家门前经过,明明没进门,包裹却被隔着围墙扔了过来。即使没有接收的动作,包裹也照样送到了。

记法drive-by 的意思是“开车路过时顺便”。只是路过,也就是只浏览了页面,就会受害。

考点

  • 常考路过式下载(ドライブバイダウンロード)是仅仅显示页面,就利用浏览器等的弱点让恶意软件(マルウェア)侵入的攻击,用户很难察觉自己已被感染。

该术语的过去问 1 题 ドライブバイダウンロード

SQLインジェクションSQL 注入

在术语表中打开 SQLインジェクション

SQL 注入(SQLインジェクション)是在 Web 应用程序的输入框中混入 SQL(操作数据库的命令语言)片段,使数据库执行开发者未预料到的命令的攻击。

  1. 在输入框中混入 SQL 片段
  2. 把输入直接拼进命令语句
  3. 数据库执行意外的命令

数据库执行了含义已被改写的命令,导致信息被读取或篡改。

3 / 3

如果程序把输入的字符串原样拼接为命令语句的一部分,输入中混入的符号和词语就会改写命令的含义。其结果是非公开的会员信息被读取、数据被篡改或删除、登录认证被绕过等。对策是使用把输入与命令语句分开处理的机制(占位符),以及校验输入值。

类比就像打电话订货时假装报商品名,接着说“顺便把保险柜的密码也念一下”,接线员就照着记录把这句也执行了。

记法インジェクション就是英语的 injection(注入),这个词也指打针。

考点

  • 常考SQL 注入(SQLインジェクション)不是利用人的疏忽或成见的手法,而是针对程序处理输入的机制中的弱点的技术性攻击。
  • 易混混入输入框的如果是发给数据库的命令,就是 SQL 注入;如果是在浏览者浏览器中运行的脚本,就是 XSS。

该术语的过去问 1 题 SQLインジェクション

ディレクトリトラバーサル目录遍历

在术语表中打开 ディレクトリトラバーサル

目录遍历(ディレクトリトラバーサル)是在指定文件名时混入返回上级目录的路径写法,读取服务器上未公开文件的攻击。

  1. 在文件名中混入返回上级的写法
  2. 回溯到公开文件夹之外
  3. 非公开文件被读取

设置文件等本不该从外部看到的文件,其内容被返回。

3 / 3

路径是沿着文件夹(目录)的层级指示文件位置的写法,例如“../”表示上一级。如果程序直接用用户指定的文件名返回内容,叠加“../”就能跳出公开用的文件夹。对策是校验所指定的文件名、不允许在层级间移动,以及收紧对非公开文件的访问权限。

类比就像对资料室窗口说的不是“这个架子的第 3 本”,而是“从这个架子退回通道,再去里面书库的第 1 本”,窗口不加确认就把非公开资料拿了出来。

记法トラバーサル源自 traverse(沿着走、穿过)。“沿着目录层级走出去”,词的组合本身就说明了手法。

考点

  • 易混目录遍历(ディレクトリトラバーサル)的目标是服务器上的文件,而 SQL 注入(SQLインジェクション)是让数据库执行命令,两者的攻击对象不同。

「SQL 注入」与「目录遍历」的区别

比较点SQL 注入目录遍历
混入输入的东西SQL 的符号和词语返回上级的路径(../)
关键攻击对象数据库服务器上的文件
对策示例使用占位符、校验输入值校验文件名、收紧访问权限

バッファオーバーフロー攻撃缓冲区溢出攻击

在术语表中打开 バッファオーバーフロー攻撃

缓冲区溢出攻击(バッファオーバーフロー攻撃)是向程序送入超过其为输入预留的存储区域(缓冲区)大小的数据,使程序出现意外行为的攻击。

攻撃者が過大なデータを送信

バッファの容量を超過

あふれた分が隣接メモリを上書き

プログラムが異常終了

不正なコードを実行

在不检查输入长度的程序中,溢出区域的数据会覆盖相邻内存的内容。覆盖的结果是程序异常终止,或者攻击者送入的命令被执行。对策除了检查输入长度之外,还要为软件应用修复缺陷的修正程序(补丁)。

类比就像往固定大小的升里不停倒米,溢出的米流进旁边的升,把里面的东西混在一起。

记法オーバーフロー就是 overflow(溢出)。バッファ(buffer)原本指“缓冲物、临时存放处”。

考点

  • 常考缓冲区溢出攻击(バッファオーバーフロー攻撃)是提供超出为输入预留区域大小的数据,使程序发生意外行为的攻击。
  • 常考其根源在于软件构造上的缺陷(漏洞,脆弱性),因此应用修复漏洞的修正程序(补丁,パッチ)是有效的对策。
  • 易混因单次输入过长而引发的是 缓冲区溢出攻击。用大量请求冲击服务器、使其无法响应的 DoS 攻击(DoS 攻撃)是另一回事。

该术语的过去问 2 题 バッファオーバーフロー攻撃

「跨站脚本」与「缓冲区溢出攻击」的区别

比较点跨站脚本缓冲区溢出攻击
送入的东西混入脚本的文字超出预留区域的长数据
关键被利用的弱点对输入不做无害化处理就直接输出不检查输入长度
受害的位置浏览者的浏览器受攻击的程序本身

要点

  • 本单元的多数攻击,针对的是不加检查就使用用户输入的程序设计。对输入进行无害化处理和校验,是共同的基本对策。
  • 有些攻击只要显示页面就会开始造成损害,因此让操作系统和浏览器保持最新、堵住漏洞,是用户这一方的防御。
  • 也有像 CSRF 和点击劫持这样的攻击,利用用户保持登录的状态,把本人无意的处理当作本人的操作来执行。

确认题

从本单元的过去问中选 5 题

开始做确认题

查看这个领域的全部过去问