作为一名合格的web开发人员需要了解哪些安全知识
经常写出来安全漏洞,被公司安全部通报...
同级的同事都已经顺利晋升,而我却因为"code不安全 不能晋级"...
作为一名web开发,怎样快速提高代码安全性?
正确理解web安全
作为开发人员是容易学习web安全知识的,要对安全知识树立正确的认识
web安全只是开发中的一小部分,安全是系统的一个基本属性, 需要意识到它的存在
开发更多是正向思维,按照要求去实现需要的功能, 而安全更多是逆向思维, 确认系统是否实现了不应该实现的功能
以开发的背景是非常容易理解安全问题,进而更加容易的修复安全问题
web安全基础知识
-
用户输入都是不可信的, 一定要进行限制
能够正确实现这个过滤,基本上解决掉了60%的安全问题
怎样去实现这个限制?
比如需要接收用户提交的购买商品的数量count, 就应该限制count一定是整数且是正整数, 防止用户购买到负金额商品, 进一步校验,大部分用户购买一个商品不可能大于1w,因此进一步限制count小于1w,防止后续数据太大导致溢出(在付款金额再次限制,金额为正) -
用户的身份进行校验
一定要对请求增加合适的访问限制,对用户身份,访问范围进行限制,防止出现未授权或越权的访问
这类问题非常常见,一定要重视起来 -
数据存储在服务端 用好session这个技术,将涉及到敏感,私有等信息,一定存在服务端session中,防止被篡改
基本以上3点,就是web安全知识的"铁三角", 理解这3点,基本上就已经入门
应用web安全知识
应用是最主要的,很多同学听了SQL注入以为就明白了,其实80%的还是不明白,或者只明白了一点点,在具体编写时,仍然还会出现问题
最主要的原因是没有真正的理解,没有真正的实操过,这个是学习者的最大问题
哪里去实际操作?
这个大家可以使用shepherd这个项目, 里面有各种web安全基础问题,帮助零基础同学快速掌握web安全基础知识
这套课程有很多等级,适合不同需求的同学进行学习和使用
持续的学习和提高
不要以为学完就已经很厉害了,其实还是在入门与门外之间徘徊,具体的场景下,仍然需要具体问题,一个不留神就会编写出安全漏洞, 持续的学习和提高才是永恒的