上面这个段子估计很多朋友都看过,程序员被黑过无数次,在其他人眼中,仿佛我们需要写得了木马,翻得了围墙,修得了电脑,找得到资源,但凡是跟计算机沾点边的,咱都得会才行。
段子归段子,言归正传,对于咱们程序员来说,多多少少了解一些信息安全的技术知识还是大有裨益的,不仅能了解一些计算机和网络的底层原理,也能反哺我们的开发工作,带着安全思维编程,减少漏洞的产生。
本文内容:
信息安全大体可分为三个大的分支:
网络安全系统安全密码学下面轩辕君就这三个领域分别罗列一些常用的黑客技术,部分技术是存在领域交叉的,就将其划入主要那个类别里去了。
网络安全
SQL注入
Web安全三板斧之首,大名鼎鼎的SQL注入。
SQL注入攻击的核心在于让Web服务器执行攻击者期望的SQL语句,以便得到数据库中的感兴趣的数据或对数据库进行读取、修改、删除、插入等操作,达到其邪恶的目的。
而如何让Web服务器执行攻击者的SQL语句呢?SQL注入的常规套路在于将SQL语句放置于Form表单或请求参数之中提交到后端服务器,后端服务器如果未做输入安全校验,直接将变量取出进行数据库查询,则极易中招。
举例如下:
对于一个根据用户ID获取用户信息的接口,后端的SQL语句一般是这样:
selectname,[……]fromt_userwhereid=$id
其中,$id就是前端提交的用户id,而如果前端的请求是这样:
GETxx/userinfo?id=1%20or%=1
其中请求参数id转义后就是1or1=1,如果后端不做安全过滤直接提交数据库查询,SQL语句就变成了:
selectname,[……]fromt_userwhereid=1or1=1
其结果是把用户表中的所有数据全部查出,达到了黑客泄露数据的目的。
以上只是一个极简单的示例,在真实的SQL注入攻击中参数构造和SQL语句远比这复杂得多,不过原理是一致的。
防御手段:对输入进行检测,阻断带有SQL语句特征对输入
重点