相信谎言的人必将在真理之前毁灭。 --赫尔巴特
Web攻击的方式
今天老大发现服务器被不断被尝试,有人不断的尝试各种URL和各类命令,想要通过对外开放的80,8080等具有特点的端口,进入我们的服务器,进行攻击。然后我们就聊了聊Web安全,一般常见的攻击方式是这样的,通过Web上传或者URL传参,植入特殊指令,获取web服务器的权限,在通过web服务器获取数据库权限(一般的数据库权限要高于web服务器),接着通过数据库获取和别的权限,这样不断的渗透、提权;渗透、提权。最终,你的机器就被黑了~
如何防范
在知道上面的流程后,我就去看了下我的代码,我用的是ThinkPHP框架架构的,这个框架是开源框架,一句话“公开的是没有秘密的”。所以,有很多人用,很多人研究,被找到BUG的可能性就提高了很多。那么对于这个情况怎么办呢?首先关注TP官方的安全补丁更新,这个可以从根本上防范。其次就是想办法隐藏TP框架的特性,让人不知道你用的是TP。
然后就是先自己尝试各种情况,看看会不会自己把自己就给玩死了。对了,还有一款软件AppScan IBM出的Web攻击测试的软件,先自己攻击自己,然后有针对性的修复漏洞。当然,尽量减少对外开放的端口,尽量严格限制Web服务器用户和数据库用户的权限,也是必不可少的手段,当然,防火墙啥的,该有的还是得有的,哈哈!!
API安全
今天又小伙伴在群里问,如何设计一个较为安全的API请求,说到这个,先推荐一个小伙伴的博客吧。 @喵了_个咪 其实,在我们的生活中有很多API使用场景,比如APP开发,那么难免遇到安全问题,第一种就是去看看百度、阿里、腾讯、新浪等这些大公司是如何做安全设计的,比如百度的地图API、阿里的开发者平台、腾讯的微信开发和新浪的微博开放平台,我们在使用他们的接口的时候,总感觉各种挑战,各种API换取key,这也是一个手段!
下面说说我的设计吧:
- 在用户通过接口A(用用户名密码,也只有A不需要sid)换取了第一个sid。
- 之后请求别的任意一个接口B,必须带上前一个A返回的sid(存在redis里面的)然后在B接口返回数据的同时生成一个新的sid给客户端。
- 再请求下一个接口的时候就必须用B给的Sid,不然就非法!
- 用户登录后将会在redis里面保存一个sid和用户id对应关系的键值对,每次都校验和生成新的sid。
说说我用Redis的理由吧:
- 缓存里面的数据虽然没有数据库的可靠,但是它非常快,同时缓存也可以设置过期时间,这样也可以做到长时间不在线直接给T下线。
- 就算意外缓存数据丢失了,对于用户的影响不过是掉线了,重新登录就好,没有任何损失。
最后说两句,这次没有啥干货,更多的是交流想法和观念,本就是粗浅的认识,如果您看了觉得有错误,或者不合理的地方,还请指出。
本文由 陌上花开 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Jul 1, 2016 at 04:09 am