.:. 草榴社區 » 技術討論區 » 转载:如何防止黑客入侵[8]:物理隔离的几种玩法
--> 本頁主題: 转载:如何防止黑客入侵[8]:物理隔离的几种玩法 字體大小 寬屏顯示 只看樓主 最新點評 熱門評論 時間順序
次次換床單


級別:精靈王 ( 12 )
發帖:2982
威望:311 點
金錢:268782424 USD
貢獻:60564 點
註冊:2015-08-10


转载:如何防止黑客入侵[8]:物理隔离的几种玩法




★先插播一个安全通告

  11月29日曝光了一个 Firefox 的高危漏洞,详情在“这里”(洋文)。
  根据漏洞描述,此漏洞只影响 Windows 平台。照理说俺用的是 Linux,应该不受影响。但考虑到俺是高危险人士,为了保险起见,还是先静默几天——暂不使用“编程随想”这个身份进行网络活动。俗话说得好:【小心驶得万年船】。
  本来俺计划在11月底发一篇博文谈 Linux,但是这个漏洞让俺改变主意——所以今天这篇来聊聊“物理隔离”的话题。
  (本文发出后,俺已经到博客后台管理界面,把这几天被 Google 误判为垃圾广告的评论,全都恢复出来了)


★本文的目标读者是哪些人?

  为了避免浪费大伙儿的时间,俺先声明一下本文的目标读者。
  这篇博文是面向那些【对安全性要求非常高】的用户。对这些人而言,“虚拟机隔离”还是无法令他们放心。

  既然聊到这里,顺便解释一下:什么情况下“虚拟机隔离”会出问题。
  如果虚拟化软件(比如 VirtualBox、VMware、KVM ...)本身出现了安全漏洞,并且这个安全漏洞会导致虚拟机被穿透;然后,Guest OS 正好又感染了恶意软件;而相关恶意代码正好又能够利用这个漏洞进行穿透;那么,该恶意代码就有可能从 Guest OS 入侵 Host OS。一旦恶意代码能够侵入 Host OS,理论上它就可以访问这个 Host OS 上的所有 Guest OS。在这种情况下,“虚拟机隔离”的措施就【失效】了。
  出现上述情况的概率是非常低的——需要好几个条件【同时】具备。因此,能够进行这种攻击的,必然是比较高级的入侵者,而且这个入侵者对入侵对象必须有深入的了解:
知道对方用的是什么类型的虚拟化软件(不同的虚拟化软件,其安全漏洞的情况全然不同),
知道对方用的 Guest OS 是什么类型的系统
知道对方用的 Host OS 是什么类型的系统

  所以,普通的网民不需要考虑这种风险。为啥捏?能这么搞的入侵者都是比较高级的,他们根本不屑于去入侵普通网民。


★预备知识:关于“隔离性”和“攻击面”

◇几种不同的隔离级别

  在本系列的前面3篇,俺连续聊了很多关于 Web 方面的防范措施。你看完这3篇之后应该会发现:俺提及的防范措施,全都是围绕“隔离”这个概念来展开的。不论是“多实例”还是“多用户”或者“多虚拟机”,说白了都是为了隔离“浏览器环境”。
  “隔离”的好处在于:一旦某个环境被入侵,(只要你的隔离屏障没有被穿透)别的环境不会受影响。说到“隔离屏障被穿透”,自然就引出“隔离性的好坏”这个话题。
  不同的“隔离措施”,其“隔离性”是不同的。“隔离性”越好,攻击者就越难穿透。
  【常见的】隔离措施(从低到高)有如下几种。俺结合浏览器来加以说明
1. 进程级
(以浏览器为例)搞多个“浏览器实例”。不同的实例肯定是不同进程,但都在同一个用户下。
2. 用户级
(以浏览器为例)在不同的【普通】用户下分别运行浏览器。但都在同一个操作系统下。
3. 虚拟系统级
(以浏览器为例)创建多个虚拟系统(Guest OS),在不同的虚拟系统中分别运行浏览器。虽然处于不同的 Guest OS,但还是在同一个 Host OS 下。
4. 物理系统级
(以浏览器为例)在不同的物理系统中运行浏览器。

  今天俺要介绍的就是最高级的“物理系统级的隔离”。

◇“物理隔离”的3种子类型

  “物理隔离”还可以继续细分为3种子类型(这三种级别也是从低到高):
物理隔离1型
多个物理系统之间【存在】网络连接。
物理隔离2型
多个物理系统之间【没有】网络连接,但【存在】存储介质的交换(比如:通过“U盘”交换数据)。
物理隔离3型
多个物理系统之间既【没有】网络连接,也【没有】存储介质的交换。

◇攻击面

  关于这个概念,洋文称之为“attack surface”,相关的英文维基百科页面在“这里”。考虑到很多同学不喜欢看洋文,下面俺通俗地扫盲一下。
  为了描述这个概念,暂且借用一下军事术语。在军事领域中,如果其它因素都一样,则防线越长就越容易被突破。
  在信息安全领域,道理也类似。军事领域的“防线”就类似于本文所说的“攻击面”。

◇“攻击面”的2个维度

  从概念上讲,“攻击面”可以再分成2个维度,分别是“时间维度”和“空间维度”。为了便于理解,下面俺举例说明。

  时间维度
  有两台软硬件配置一模一样电脑(A 和 B)。A 是一年到头365天都挂在网上,而 B 在一年里面只联网1分钟。很显然,A 被入侵的概率要大大高于 B。

  空间维度
  有两台服务器 A 和 B,都是始终联网的(时间维度一样)。A 上面【没有】装任何服务端软件;而 B 上面既装了 Apache(web 服务)又装了 MySQL(数据库)。而且这几个服务的端口都对外开放。假如某天,Apache 曝光了高危漏洞,B 就可能因此而被入侵,但是 A 就没事儿。
  【通俗地说】,系统中装的软件越多,则包含的“代码”就越多,那么“代码”中出现安全漏洞的概率也就越大。
  (上面这句只是“通俗”的说法。严格来讲,“攻击面”与“代码量”并【不是】简单的线性关系。这两者之间的关系牵扯的因素很多,比如:软件代码的质量,软件模块的类型、各个软件模块之间的依赖关系、开源 or 闭源 ......)


★招数1:把不同的上网帐号放到不同的物理系统

  这个招数是最容易想到的,所以俺先聊这招。
  如今很多人都有不止一台 PC。但是 PC 再多也不会超过10台吧(除非你是开网吧的)。但是你的上网帐号很可能不止10个。所以,你不太可能给每一个上网帐号配一台单独的 PC。这就需要考虑一个“划分策略”:哪些帐号共用一台 PC。
  “划分策略”通常有如下两种:

◇根据“重要程度”进行划分

  比如说,你搞两台 PC,一台专门用来操作很重要的网络帐号,另一台用来操作不那么重要的网络帐号。
  对于前者,安装靠谱的操作系统(Linux > Mac OS > Windows),装的软件要尽量【少】(减少“攻击面”),并采取尽可能多的措施来保护它(具体措施参见本系列前面几篇)。

◇根据“身份”划分

  如果你对隐匿性的要求很高,可以考虑以“身份”划分上网帐号到不同的 PC。
  为了便于理解,拿俺自个儿来举例:
  显然,俺是非常看重“隐匿性”滴——如果让朝廷方面知道俺的真实身份,俺就废了。所以,俺不光注重【安全性】的需求(防止被入侵),更加要注重【隐匿性】的需求(防止俺的“虚拟身份”与“真实身份”被关联起来)。
  如果俺仅仅使用“虚拟机隔离”(一个虚拟机用来操作“真实身份”的帐号,另一个虚拟机用来操作“编程随想这个身份”的帐号)。万一碰到“虚拟机穿透”(前面提到过),入侵者通过 Guest OS 进入 Host OS,就可以同时访问到这两个 Guest OS,就有可能发现:原来“编程随想”就是某某人。
  反之,如果把这两个身份的帐号放到两台 PC(物理隔离)。即使“编程随想”这个身份对应的 PC 被彻底入侵,入侵者看到的帐号全部都是“编程随想”相关的帐号,不会看到“真实身份的帐号”(因为这些帐号在另一台 PC 上)。


★招数2:在【专用的】物理系统中操作“重置密码的邮箱”

  这个招数很简单,仅仅从章节标题,你基本上就能猜到是怎么玩的。所以俺就节省点口水,不展开了。
  下面简单说说这个招数的注意事项:
1. 用来“重置密码”的邮箱,最好是专用的——也就是说:除了“重置密码”,不再作其它用途(以降低“攻击面”)
2. 操作这个邮箱的 PC,最好也是专用的(以降低“攻击面”)
3. 这台电脑只要很低的硬件配置就可以了。所以,你可以拿以前淘汰的旧电脑来用。


★招数3:在【专用的】物理系统中运行密码生成器

  可能很多同学是第一次听说“密码生成器”这个玩意儿。所以俺来解释一下:
  在本系列的第3篇《如何构造安全的口令/密码》中,俺介绍了好几种设置密码的技巧,那篇教程的最后一招就是“用散列算法构造密码”。
  “用散列算法构造密码”,有“简单用法”,也有“高级用法”(对这两种,那篇博文都有介绍)。由于本文针对的是“安全性要求很高的读者”,所以你当然要用“高级用法”。“高级用法”通常需要依靠一个小程序/小脚本来辅助你进行 N 迭代(计算 N 次散列)。这个“小程序/小脚本”就是本章节所说的“密码生成器”。
  有了“密码生成器”,你可以轻松构造出许许多多超长密码(可以长达几百个字符,前提是:网站要支持这么长的密码)。而且你【不需要】花很多脑细胞来记住这些变态的长密码。你只需记住自己的“种子串”以及“迭代次数”。如果你把“种子串”及“迭代次数”写死在生成器的脚本中,那你甚至连这两个信息也【不用】记忆。
  这台运行“密码生成器”的电脑完全【不用联网】。所以这台 PC 的隔离属于前面提到的“物理隔离3型”——这是物理隔离中最严格的(没有之一)。


★招数4:对重要帐号划分“操作机”和“登录机”

  这个招数与前面几个完全不同——是采用【2台】PC 来保护【单个】帐号。通常而言,只有很重要的帐号才值得你动用两台物理电脑来保护。
  这个招数相对比较难懂,俺需要多费点口水。在开讲之前,先来解释一下什么是“记住登录状态”的功能。

◇“记住登录状态”功能

  如今大部分网络帐号都有【记住登录状态】这个功能。当你登录该帐号,输入完密码后,如果勾选了“记住登录状态”这个选项(不同的网站,界面上的叫法可能略有不同),那么你下次访问该帐号就【不用】再输入密码了。

◇“记住登录状态”的技术原理

  网站是如何做到这个效果的捏?通常是利用浏览器 cookie。当你输入密码并登录成功之后,会在 cookie 中保存一个“安全令牌”(洋文叫“token”)。这个“安全令牌”不是密码,但是比密码更复杂更难暴力破解。而且,根据令牌是【无法】逆向推算出密码的(只要是比较靠谱的网站,技术上肯定能保证这点)。
  当你下一次又访问了这个网站,浏览器会把 cookie 中的这个令牌发送到网站服务器,服务器端会采用某种安全可靠的算法来验证这个令牌是否合法,如果合法,就认为你是之前登录过的那个用户。      9ead6602*92bec72得码记得看技术区版规,乱发贴版主不会客气。  由于 cookie 有时间限制(期限),过了期限这个 cookie 就失效了。这时候你如果又访问这个网站,它又会要求你输入密码。另外,如果你在浏览器中清空了所有 cookie,那么下一次访问该网站也要重新输入密码。

◇物理隔离的玩法

  明白了这个功能的原理之后,开始来说“物理隔离”怎么玩。
  你需要专门准备2台 PC——“登录机”和“操作机”。记住:这2台电脑都是用来操作【同一个】帐号滴。
  每次需要登录该帐号,你一定要在“登录机”上输入密码。登录成功之后,把登录机上的【cookie 文件】复制到“操作机”上。然后你就可以在“操作机”上【免登录】访问该帐号。
  (由于需要把 cookie 从“登录机” copy 到“操作机”。所以这种隔离属于前面提到的“物理隔离2型”)

◇这个招数的优点

  首先,因为你从来【不】在“操作机”上输入该帐号的密码。所以,即使“操作机”被植入木马,木马也不可能知道该帐号的密码是啥。

  从“时间维度”而言
  由于“登录机”仅仅用来输入密码,其它的日常操作都在“操作机”。所以,(从“时间维度”上讲)“登录机”的攻击面远远小于“操作机”。

  从“空间维度”而言
  由于这个“登录机”仅仅用来输入密码。你只需安装非常少的几个软件(比如 浏览器 之类的)。如果你的帐号名称是洋文(大部分应该都是吧),这台“登录机”甚至连输入法都【不用装】。
  所以,从“空间维度”而言,“登录机”的攻击面也会远远小于“操作机”。

  综上所述,入侵者很难搞定“登录机”。
  然后,前面俺又说了,根据(cookie 中的)“安全令牌”是无法逆向推算出帐号密码滴。所以,即使“操作机”被【彻底】入侵了,入侵者虽然可以进入你的帐号,但是他/她依然无法知道你的密码(因此也就无法改密码)。
  这种情况下,你可以很轻松地把入侵者踢掉——只需通过“登录机”进入帐号,修改密码;然后入侵者在“操作机”上就进不了这个帐号了(一旦修改过密码,原有的安全令牌就作废了)。


★招数5:“物理隔离”搭配“多重代理”

◇“物理电脑”与“虚拟机”在“网络隔离”方面的差异

  俺博客上有一个很受欢迎的系列叫做《如何隐藏你的踪迹,避免跨省追捕》。在这个系列中,俺介绍“多重代理”,也介绍了“用虚拟机防止公网 IP 暴露”。
  当初俺写那篇《用虚拟机隐匿公网 IP》的时候,好几个懂技术的读者跳出来质疑。因为他们光看标题没看内容 :)
  所谓的“用虚拟机防止公网 IP 暴露”,是因为:可以利用虚拟网卡的不同模式(NAT 及 Host-Only)来设置网络隔离,使得 Guest OS 中的软件【无法直接联网】(强迫这些软件走代理)。这样就可以避免:“因为某些软件【直连网络】导致的公网 IP 暴露”。

  但如果出现“虚拟机被穿透”,那“公网 IP”还是有暴露的风险。因为虚拟网卡只能用来限制 Guest OS,而无法限制 Host OS。而 Host OS 中的软件通常是可以直连公网的。当某个恶意代码从 Guest OS 穿透进入 Host OS,该恶意代码就有可能尝试“网络直连”,并导致你的公网 IP 暴露。
  看到这里,聪明的读者已经猜到解决方案了。那就是把原先“单虚拟机方案 或 双虚拟机方案”中那个“隔离的虚拟机”换成“隔离的物理电脑”。
  话虽这么说,但操作起来会有点复杂。
  原先的“虚拟机方案”,你只需设置虚拟网卡的“网卡模式”(设置成 Host-Only 或 Internal),就可以把 Guest OS 的网络访问隔离起来。但是物理电脑是【没有】虚拟网卡的,物理电脑是物理网卡。而“物理网卡”是【没有】“网卡模式”让你修改的。所以你需要在网络拓扑上下点功夫。具体的玩法有很多种,考虑到本文的篇幅有限,俺只介绍其中一种。

◇“物理电脑”进行“网络隔离”的玩法(方法之一)

  下面俺【简单】介绍一下步骤(考虑到本文面向的是安全要求很高的读者。既然你的安全要求很高,当然不能是技术菜鸟,肚子里要有点货。所以,俺在下面只提几个要点,操作的细节靠你自己摸索了)

1.
准备两台物理电脑,分别称为“隔离机”和“网关机”。
“隔离机”要有一个【有线】的网卡;“网关机”要有2个网卡,至少有一个是【有线】的(用来与“隔离机”对接)
为啥俺要强调“有线网卡”,因为有线网卡才能确保其只连接到一个对端;而无线网卡就难说了。
所以隔离机只能保留仅有的一个有线网卡。如果隔离机有多余的无线网卡,在 BIOS 里面禁掉。

2.
“隔离机”上运行的软件是:
有可能遭遇高级入侵的软件(比如你的浏览器),或者是那些本身就不太安分的软件(比如 QQ)
“网关机”上运行的软件是:
TOR
TOR 的前置代理(如果你在墙外,可以不用前置代理。但是有前置代理会更安全——“双重代理”优于“单重代理”)
防火墙

3.
前面说了,“网关机”至少有一个有线网卡,用来对接“隔离机”。
因此,你需要配置“网关机”的防火墙,使得【在这块网卡上】只允许 TOR 的监听端口对外暴露(这条一定设置)
另一块网卡是用来接入公网的,你可以配置防火墙,禁止该网卡上的任何监听端口(这条可设可不设,设置了更保险一些)

4.
用一根网线把这2台电脑各自的【有线网卡】对接起来。

5.
设置“隔离机”上的软件,让它们以“网关机”的 TOR 作为代理。

6.
设置“网关机”上的 TOR,让它通过“网关机”上的前置代理联网。


★总结

  几个主要招数聊得差不多了。俺在最后提醒一下:
1. 本文的这几个招数,相互之间是可以【组合使用】的
2. 本文的这几个招数是可以跟“虚拟机隔离”结合起来用的
3. 组合得越复杂,需要的物理电脑也越多 :)
4. 如今的 PC 已经很便宜啦(两三千就可以买到硬件配置还凑合的)。如果你是“高危人士”或“高价值目标”,【不要】吝啬那几千块钱!


回到本系列的目录版权声明
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者[url=mailto:program.think@gmail.com]编程随想[/url]和本文原始地址:
https://program-think.blogspot.com/2016/12/howto-prevent-hacker-attack-8.html

赞(8)
TOP Posted:2021-06-15 00:52 樓主 引用 | 發表評論
贱南剑


級別:俠客 ( 9 )
發帖:1094
威望:110 點
金錢:77 USD
貢獻:0 點
註冊:2021-04-22


1024
TOP Posted:2021-06-15 01:12 #1樓 引用 | 點評
伦敦上空的鹰


級別:精靈王 ( 12 )
發帖:13092
威望:1317 點
金錢:2406 USD
貢獻:600 點
註冊:2020-11-29

感谢楼主分享
TOP Posted:2021-06-15 01:14 #2樓 引用 | 點評
未闻她名


級別:新手上路 ( 8 )
發帖:174
威望:18 點
金錢:30 USD
貢獻:0 點
註冊:2021-05-29

1024
TOP Posted:2021-06-15 01:33 #3樓 引用 | 點評
一来


級別:新手上路 ( 8 )
發帖:137
威望:14 點
金錢:137 USD
貢獻:0 點
註冊:2021-05-11

1024
TOP Posted:2021-06-15 02:09 #4樓 引用 | 點評
㊣猥瑣欲為ゞ


級別:光明使者 ( 14 )
發帖:42299
威望:4646 點
金錢:2141484046 USD
貢獻:660395 點
註冊:2011-06-06

刚听朋友说广东台山核泄
希望不是真的~
------------------------
@
TOP Posted:2021-06-15 02:26 #5樓 引用 | 點評
zxzxy123


級別:新手上路 ( 8 )
發帖:626
威望:63 點
金錢:60 USD
貢獻:42 點
註冊:2012-01-01

1024
TOP Posted:2021-06-15 02:28 #6樓 引用 | 點評
明天的明明


級別:俠客 ( 9 )
發帖:1938
威望:195 點
金錢:97 USD
貢獻:0 點
註冊:2019-03-24

感谢楼主分享
TOP Posted:2021-06-15 02:38 #7樓 引用 | 點評
知不可为


級別:新手上路 ( 8 )
發帖:12
威望:2 點
金錢:22 USD
貢獻:0 點
註冊:2021-06-15

做了快十年的游客,抢了5年的码,永远是无法注册,都让我怀疑是不是什么地方一直操作错了!半夜肚子痛醒了,拜读老师的文章时发现一码,抱着试试的态度从0开始逐一试,就在我以为又是白忙活一趟,刷到f竟然成功了!十年游客终得上岸,没有什么语言能表达对老师的感谢!唯有熟读版规,认真学习老师的文章!祝老师技术更上一层楼!


點評

    TOP Posted:2021-06-15 02:43 #8樓 引用 | 點評
    亿点点资产


    級別:新手上路 ( 8 )
    發帖:531
    威望:54 點
    金錢:19 USD
    貢獻:0 點
    註冊:2021-05-19

    1024
    TOP Posted:2021-06-15 03:30 #9樓 引用 | 點評
    emmy


    級別:光明使者 ( 14 )
    發帖:14230
    威望:573 點
    金錢:401339 USD
    貢獻:643946 點
    註冊:2012-09-29

    技术大师


    點評

      TOP Posted:2021-06-15 05:15 #10樓 引用 | 點評
      白狐儿脸


      級別:騎士 ( 10 )
      發帖:3531
      威望:354 點
      金錢:23 USD
      貢獻:52 點
      註冊:2016-08-29


      谢谢楼主分享
      TOP Posted:2021-06-15 07:05 #11樓 引用 | 點評
      wan9


      級別:俠客 ( 9 )
      發帖:2745
      威望:275 點
      金錢:3180 USD
      貢獻:3 點
      註冊:2021-05-19

      感谢作者的分享
      TOP Posted:2021-06-15 07:18 #12樓 引用 | 點評
      evenss


      級別:聖騎士 ( 11 )
      發帖:1493
      威望:150 點
      金錢:1010324 USD
      貢獻:24850 點
      註冊:2020-11-11

      1024
      TOP Posted:2021-06-15 08:08 #13樓 引用 | 點評
      太平常


      級別:俠客 ( 9 )
      發帖:2124
      威望:203 點
      金錢:2185 USD
      貢獻:0 點
      註冊:2020-08-02

      感谢分享
      TOP Posted:2021-06-15 08:09 #14樓 引用 | 點評
      老鼠爱红豆


      級別:新手上路 ( 8 )
      發帖:266
      威望:43 點
      金錢:276 USD
      貢獻:0 點
      註冊:2019-02-12

      感谢分享
      TOP Posted:2021-06-15 08:11 #15樓 引用 | 點評
      巴桑果累


      級別:騎士 ( 10 )
      發帖:3502
      威望:351 點
      金錢:1334881 USD
      貢獻:532 點
      註冊:2020-06-07

      感谢分享
      TOP Posted:2021-06-15 08:13 #16樓 引用 | 點評
      g_spot


      級別:聖騎士 ( 11 )
      發帖:8196
      威望:765 點
      金錢:241611 USD
      貢獻:65 點
      註冊:2014-10-29


      技术型的贴子
      ------------------------
      G
      TOP Posted:2021-06-15 08:19 #17樓 引用 | 點評
      一片月临城


      級別:聖騎士 ( 11 )
      發帖:5908
      威望:591 點
      金錢:1131 USD
      貢獻:2212 點
      註冊:2021-05-04

      感谢分享
      TOP Posted:2021-06-15 08:21 #18樓 引用 | 點評
      梦似人生


      級別:聖騎士 ( 11 )
      發帖:6380
      威望:639 點
      金錢:114707 USD
      貢獻:1000 點
      註冊:2011-06-06

      除了拔网线没有绝对的安全


      點評

        TOP Posted:2021-06-15 09:11 #19樓 引用 | 點評
        火之歌


        級別:禁止發言 ( 8 )
        發帖:13600
        威望:1356 點
        金錢:2753 USD
        貢獻:1 點
        註冊:2019-05-23

        感谢你的分享
        TOP Posted:2021-06-15 09:25 #20樓 引用 | 點評
        太极天皇大帝


        級別:精靈王 ( 12 )
        發帖:4331
        威望:1050 點
        金錢:9782363 USD
        貢獻:20000 點
        註冊:2021-04-24

        电脑大人的楼主,感谢分享
        TOP Posted:2021-06-15 10:40 #21樓 引用 | 點評
        流氓骑士


        級別:禁止發言 ( 8 )
        發帖:1025
        威望:103 點
        金錢:1200000 USD
        貢獻:91240 點
        註冊:2021-04-30

        涨知识了
        TOP Posted:2021-06-15 19:33 #22樓 引用 | 點評
        bobola


        級別:俠客 ( 9 )
        發帖:1012
        威望:102 點
        金錢:1555299 USD
        貢獻:9700 點
        註冊:2021-03-29


        很有意思回复表示支持
        TOP Posted:2021-06-16 03:44 #23樓 引用 | 點評
        江天一色


        級別:騎士 ( 10 )
        發帖:3907
        威望:351 點
        金錢:3907 USD
        貢獻:0 點
        註冊:2018-07-23

        谢谢分享
        TOP Posted:2021-06-16 04:03 #24樓 引用 | 點評

        .:. 草榴社區 -> 技術討論區

        快速回帖 頂端
        內容
        HTML 代碼不可用

        使用簽名
        Wind Code自動轉換

        按 Ctrl+Enter 直接提交