信息安全核心技术详解:网络、系统与密码学
对于程序员来说,了解一些信息安全的技术知识大有裨益。这不仅能帮助理解计算机和网络的底层原理,还能反哺开发工作,带着安全思维编程,减少漏洞的产生。
信息安全大体可分为三个大的分支:
- 网络安全
- 系统安全
- 密码学
网络安全
SQL 注入
SQL 注入是 Web 安全中最常见的攻击手段之一。其核心在于让 Web 服务器执行攻击者期望的 SQL 语句,从而获取数据库中的敏感数据或对数据库进行读取、修改、删除、插入等操作。
常规套路是将 SQL 语句放置于 Form 表单或请求参数之中提交到后端服务器。如果后端服务器未做输入安全校验,直接将变量取出进行数据库查询,则极易中招。
例如,对于一个根据用户 ID 获取用户信息的接口,后端的 SQL 语句一般是这样:
SELECT name, ... FROM t_user WHERE id = $id
其中 $id 是前端提交的用户 ID。如果前端的请求是这样:
GET /userinfo?id=1 OR 1=1
请求参数 id 转义后就是 1 or 1=1。如果后端不做安全过滤直接提交数据库查询,SQL 语句就变成了:
SELECT name, ... FROM t_user WHERE id = 1 OR 1=1
其结果是把用户表中的所有数据全部查出,达到泄露数据的目的。
防御手段:对输入进行检测,阻断带有 SQL 语句特征的输入;使用预编译语句(Prepared Statements)或 ORM 框架。
重点关注:前端工程师、Web 后端工程师。
XSS 攻击
XSS 全称跨站脚本攻击(Cross Site Scripting),为了与层叠样式表 CSS 区分,使用了另一个缩写 XSS。其核心是将可执行的前端脚本代码(一般为 JavaScript)植入到网页中,诱导浏览器执行攻击者的 JS 代码。
反射型 XSS
- 攻击者将 JS 代码作为请求参数放置在 URL 中,诱导用户点击。
- 用户点击后,该 JS 作为请求参数传给 Web 服务器后端。
- 后端服务器没有检查过滤,简单处理后放入网页正文中返回给浏览器。
- 浏览器解析返回的网页,中招!
示例:
http://localhost:8080/test?name=<script>alert("you are under attack!")</script>
存储型 XSS
存储型 XSS 的区别在于能够将攻击脚本入库存储,在后面进行查询时,再将攻击脚本渲染进网页,返回给浏览器触发执行。
常见套路:
- 攻击者在网页回帖,帖子中包含 JS 脚本。


