上面这个段子估计很多朋友都看过,被黑过无数次,在其他人眼中,仿佛我们需要写得了木马,翻得了围墙,修得了,找得到资源,但凡是跟计算机沾点边的,咱都得会才行。
段子归段子,言归正传,对于咱们程序员来说,多多少少了解一些的技术知识还是大有裨益的,不仅能了解一些计算机和网络的底层原理,也能反哺我们的开发工作,带着安全思维编程,减少的产生。
本文内容:
- - SQL注入 - 攻击 - CSRF攻击 - 攻击 - 劫持 - TCP劫持 - 端口扫描技术- 安全 - 栈溢出攻击 - 整数溢出攻击 - 空指针攻击 - 释放后使用攻击 - HOOK - 权限提升 - 可信计算- 密码学 - 对称加密 & 非对称加密 - 秘钥交换技术 - 信息摘要 - 数据编码技术 - 多因子认证技术信息安全大体可分为三个大的分支:
网络安全系统安全密码学下面轩辕君就这三个分别罗列一些常用的,部分技术是存在领域交叉的,就将其划入主要那个类别里去了。
网络安全SQL注入Web安全三板斧之首,大名鼎鼎的SQL注入。
SQL注入攻击的核心在于让Web执行攻击者期望的SQL语句,以便得到中的感兴趣的数据或对数据库进行读取、修改、删除、插入等操作,达到其邪恶的目的。
而如何让Web服务器执行攻击者的SQL语句呢?SQL注入的常规套路在于将SQL语句放置于Form表单或请求参数之中提交到后端服务器,后端服务器如果未做输入安全校验,直接将变量取出进行数据库,则极易中招。
举例如下:
对于一个根据用户ID获取用户信息的,后端的SQL语句一般是这样:
selectname,[...] from t_user whereid=$id其中,$id就是前端提交的用户id,而如果前端的请求是这样:
GET /userinfo?id=1%20or%201=1其中请求参数id转义后就是1 or 1=1,如果后端不做安全过滤直接提交数据库查询,SQL语句就变成了:
selectname,[...] from t_user whereid=1or1=1其结果是把用户表中的所有数据全部查出,达到了泄露数据的目的。
以上只是一个极简单的示例,在真实的SQL注入攻击中参数构造和SQL语句远比这复杂得多,不过原理是一致的。
防御手段:对输入进行检测,阻断带有SQL语句特征对输入
重点关注:前端工程师、Web后端工程师
XSS攻击Web安全三板斧之二,全称跨站攻击(Cross Site Scripti),为了与重叠样式表CSS区分,换了另一个缩写XSS。
XSS攻击的核心是将可执行的前端脚本代码(一般为)植入到网页中,听起来比较拗口,用大白话说就是攻击者想让你的浏览器执行他写的JS代码。那如何办到呢?一般XSS分为两种:
反射型1、攻击者将JS代码作为请求参数放置U中,诱导用户点击 示例:
:8080/test?name=<script>alert("you are under attack!")</script>2、用户点击后,该JS作为请求参数传给Web服务器后端
3、后端服务器没有检查过滤,简单处理后放入网页正文中返回给浏览器
4、浏览器解析返回的网页,中招!
存储型