欢迎来到网络安全的世界!

你好!今天,我们将深入探讨 H2 Computing 旅程中最令人兴奋且与时俱进的章节:网络安全(Cybersecurity)。在我们几乎所有活动都在线进行的时代,学习如何保护数据和系统不仅仅是为了电影中的“黑客”—这对每一位计算机专业人员来说,都是一项至关重要的技能。

如果起初觉得某些术语令人生畏,请不必担心。我们会将它们拆解成浅显易懂的部分,并辅以丰富的故事和比喻来帮助你理解。让我们开始吧!


1. 在新加坡保护数据:PDPA

在谈论技术之前,我们需要谈谈法律。在新加坡,个人资料保护法令(Personal Data Protection Act, PDPA)是组织在处理你的个人资料时必须遵守的“规则手册”。

PDPA 涵盖了什么?

PDPA 规范了关于个人资料(即能够识别你身份的数据,例如身份证号码、电话号码,甚至是你的面容)的三项主要活动:

1. 收集(Collection): 组织必须有正当理由要求提供你的数据,并且通常需要征得你的同意。
2. 使用(Use): 他们只能将你的数据用于已向你说明并同意的目的。
3. 披露(Disclosure): 未经你的允许,他们不能将你的数据提供给第三方。

比喻:想象你为了参加积分计划而将电话号码交给了的一家珍珠奶茶店。根据 PDPA,他们不能开始利用该号码向你推销保险(错误的使用),也不能将你的号码出售给其他公司(错误的披露)。

快速回顾:PDPA 的三大支柱

收集: 要求提供数据。
使用: 对数据进行操作。
披露: 分享数据。


2. 社会工程学:入侵人类的心理

有时,最容易“入侵”计算机的方法并非通过代码,而是通过欺骗使用者。这被称为社会工程学(Social Engineering)

常见的社会工程学攻击

网络钓鱼(Phishing): 发送伪装成受信任来源(例如你的银行)的虚假邮件或信息,诱骗你点击链接或交出密码。
伪装欺骗(Pretexting): 创造一个虚假的场景(即“借口”)来窃取信息。例子:有人打电话给你,假装是“IT 技术支持”,并声称他们需要你的密码来修复账户中的“严重错误”。
肩窥(Shoulder Surfing): 在公共场合直接从别人的肩膀上方偷看他们输入 PIN 码或密码。

记忆口诀: People Play Secretly(网络钓鱼 Phishing、伪装 Pretexting、肩窥 Shoulder Surfing)。

重点提示: 永远要核实要求你提供信息的人员或网站的身份!


3. 恶意软件:“数字流感”

恶意软件(Malware)是“Malicious Software”的缩写。它是任何旨在损害计算机系统或获取未经授权访问权限的程序。

认识恶意软件家族

病毒(Viruses): 依附于合法文件,并在文件被打开时传播的程序。它们需要一个“人类宿主”来采取行动。
蠕虫(Worms): 它们比病毒更“独立”且更“聪明”。它们可以自我复制,并在无需任何人工干预的情况下自动在网络中传播。
木马(Trojans): 以希腊历史中的木马命名。它们看起来像是实用或有趣的程序(例如免费游戏),但内部隐藏了恶意代码。
勒索软件(Ransomware): 这会锁定或加密你的文件,并索取“赎金”以换取恢复文件的权限。

常见的错误: 别把病毒和蠕虫搞混了!病毒需要你采取行动(例如打开附件),而蠕虫则会自行在网络中穿梭。


4. 拒绝服务(DoS)攻击

拒绝服务(Denial-of-Service, DoS)攻击就像是一种阻塞店铺门口的数字抗议。其目的不是窃取数据,而是使服务对合法用户无法使用(Unavailable)

运作原理:

攻击者向服务器发送大量请求,导致服务器因负载过重而崩溃或速度极度缓慢。这直接攻击了系统的可用性(Availability)

比喻:想象 500 个根本没打算买东西的人突然同时挤进一家小咖啡馆。真正想买咖啡的顾客甚至无法进入大门。


5. Web 应用程序漏洞

网站通常使用与数据库互动的代码构建。如果代码编写不严谨,黑客就可以利用这些“漏洞”进行攻击。

“三大”漏洞

1. SQL 注入(SQL Injection, SQLi): 攻击者将恶意 SQL 代码插入到输入框(如登入框)中,诱骗数据库泄漏隐秘数据。
2. 跨站请求伪造(Cross-Site Request Forgery, CSRF): 这会诱骗已登入的用户点击一个链接,该链接会执行用户未预期的操作(例如更改密码或转账)。
3. 文件包含(File Inclusion): 当 Web 应用允许用户输入文件路径时会发生这种情况,攻击者可能借此访问本不应被看到的服务器敏感文件。

如何守护堡垒(解决方案)

输入验证(Input Validation): 检查所有用户输入的数据。如果预期是电话号码,就不要接受字母或符号(如 \( ' \) 或 \( ; \))。
预编译 SQL 陈述式(Prepared SQL Statements): 不要手动构建查询字符串,而应使用占位符。这会将用户输入视为“单纯的数据”而非“可执行的代码”。
CSRF 令牌(CSRF Tokens): 为每个请求使用独特且隐秘的“印章”,以便服务器能验证请求确实来自真实用户。
文件权限(File Permissions): 在服务器上设置严格的规则,使 Web 应用只能访问特定文件夹,而不能访问其他内容。

快速回顾:SQLi 防御

糟糕的做法: 像这样构建查询:"SELECT * FROM users WHERE name = " + userInput
好的做法: 使用预编译陈述式(Prepared Statements)输入验证(Input Validation)将“恶意代码”拒之门外!


6. 加强网络安全

当我们在网上发送数据时,需要工具来确保其安全。我们主要通过三种方法实现:

1. 加密(Encryption): 将数据搅乱,只有拥有“密钥”的人才能阅读。这确保了机密性(Confidentiality)
2. 数字签名(Digital Signatures): 一种证明信息未被篡改(完整性,Integrity)以及证明发送者身份(不可否认性,Non-repudiation)的方法。
3. 身份验证(Authentication): 证明“你就是你”的过程(例如使用密码、指纹或手机短信验证码)。

你知道吗? 当你在浏览器网址栏看到锁头图标时,这意味着该网站正在使用加密来保护你的计算机与其服务器之间传输的数据!


最终总结清单

在继续学习之前,请确保你能:
• 解释 PDPA(收集、使用、披露)。
• 描述社会工程学(网络钓鱼、伪装、肩窥)。
• 区分各类型的恶意软件(病毒、蠕虫、木马、勒索软件)。
• 解释 DoS 攻击如何影响可用性。
• 识别 SQLiCSRF,并知道如何修复它们(输入验证、预编译陈述式、令牌)。
• 理解加密身份验证如何维护网络安全。

你做得到!网络安全是一个广阔的领域,但只要掌握了这些基础知识,你就已经迈向成为一名精明的计算机专业学生的康庄大道。请继续练习那些 SQL 注入防御方法吧!