【原】关于Web安全
in 随笔 with 0 comment

【原】关于Web安全

in 随笔 with 0 comment

相信谎言的人必将在真理之前毁灭。 --赫尔巴特


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,这也是一个手段!

下面说说我的设计吧:

  1. 在用户通过接口A(用用户名密码,也只有A不需要sid)换取了第一个sid。
  2. 之后请求别的任意一个接口B,必须带上前一个A返回的sid(存在redis里面的)然后在B接口返回数据的同时生成一个新的sid给客户端。
  3. 再请求下一个接口的时候就必须用B给的Sid,不然就非法!
  4. 用户登录后将会在redis里面保存一个sid和用户id对应关系的键值对,每次都校验和生成新的sid。

说说我用Redis的理由吧:

最后说两句,这次没有啥干货,更多的是交流想法和观念,本就是粗浅的认识,如果您看了觉得有错误,或者不合理的地方,还请指出。

Comments are closed.