一网打尽!每个程序猿都该了解的黑客技术大汇

一网打尽!每个程序猿都该了解的黑客技术大汇

上面这个段子估计很多朋友都看过,程序员被黑过无数次,在其他人眼中,仿佛我们需要写得了木马,翻得了围墙,修得了电脑,找得到资源,但凡是跟计算机沾点边的,咱都得会才行。

段子归段子,言归正传,对于咱们程序员来说,多多少少了解一些信息安全的技术知识还是大有裨益的,不仅能了解一些计算机和网络的底层原理,也能反哺我们的开发工作,带着安全思维编程,减少漏洞的产生。

本文内容:

- 网络安全 - SQL注入 - XSS攻击 - CSRF攻击 - DDoS攻击 - DNS劫持 - TCP劫持 - 端口扫描技术 - 系统安全 - 栈溢出攻击 - 整数溢出攻击 - 空指针攻击 - 释放后使用攻击 - HOOK - 权限提升 - 可信计算 - 密码学 - 对称加密 & 非对称加密 - 秘钥交换技术 - 信息摘要算法 - 数据编码技术 - 多因子认证技术

信息安全大体可分为三个大的分支:

网络安全

系统安全

密码学

下面轩辕君就这三个领域分别罗列一些常用的黑客技术,部分技术是存在领域交叉的,就将其划入主要那个类别里去了。

网络安全 SQL注入

Web安全三板斧之首,大名鼎鼎的SQL注入。

SQL注入攻击的核心在于让Web服务器执行攻击者期望的SQL语句,以便得到数据库中的感兴趣的数据或对数据库进行读取、修改、删除、插入等操作,达到其邪恶的目的。

而如何让Web服务器执行攻击者的SQL语句呢?SQL注入的常规套路在于将SQL语句放置于Form表单或请求参数之中提交到后端服务器,后端服务器如果未做输入安全校验,直接将变量取出进行数据库查询,则极易中招。

举例如下:

对于一个根据用户ID获取用户信息的接口,后端的SQL语句一般是这样:

select name,[...] from t_user where id=$id

其中,$id就是前端提交的用户id,而如果前端的请求是这样:

GET xx/userinfo?id=1%20or%201=1

其中请求参数id转义后就是1 or 1=1,如果后端不做安全过滤直接提交数据库查询,SQL语句就变成了:

select name,[...] from t_user where id=1 or 1=1

其结果是把用户表中的所有数据全部查出,达到了黑客泄露数据的目的。

以上只是一个极简单的示例,在真实的SQL注入攻击中参数构造和SQL语句远比这复杂得多,不过原理是一致的。

防御手段:对输入进行检测,阻断带有SQL语句特征对输入

重点关注:前端工程师Web后端工程师

XSS攻击

Web安全三板斧之二,全称跨站脚本攻击(Cross Site Scripting),为了与重叠样式表CSS区分,换了另一个缩写XSS。

XSS攻击的核心是将可执行的前端脚本代码(一般为JavaScript)植入到网页中,听起来比较拗口,用大白话说就是攻击者想让你的浏览器执行他写的JS代码。那如何办到呢?一般XSS分为两种:

反射型

1、攻击者将JS代码作为请求参数放置URL中,诱导用户点击
示例:

:8080/test?name=<script>alert("you are under attack!")</script>

2、用户点击后,该JS作为请求参数传给Web服务器后端

3、后端服务器没有检查过滤,简单处理后放入网页正文中返回给浏览器

4、浏览器解析返回的网页,中招!

存储型

上述方式攻击脚本直接经服务器转手后返回浏览器触发执行,存储型与之的区别在于能够将攻击脚本入库存储,在后面进行查询时,再将攻击脚本渲染进网页,返回给浏览器触发执行。常见的套路举例如下:

1、攻击者网页回帖,帖子中包含JS脚本

2、回帖提交服务器后,存储至数据库

3、其他网友查看帖子,后台查询该帖子的回帖内容,构建完整网页,返回浏览器

4、该网友浏览器渲染返回的网页,中招!

防御手段:前后端均需要做好内容检测,过滤掉可执行脚本的侵入

重点关注:前端工程师Web后端工程师

CSRF攻击

Web安全三板斧之三,攻击示意图如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyzfzd.html