还在用get方法?禁止get方法调用更安全!

吉云

今儿个咱来聊聊我在捣鼓项目时遇到的一个小问题——禁止GET方法调用。这事儿还得从头说起。

我这项目没那么多讲究,GET、POST方法都用得挺欢。毕竟方便嘛啥数据都能往里头塞。但后来随着项目越做越大,安全性问题就得重视起来。你想,GET方法直接把参数啥的都挂在URL上头,明晃晃的,谁都能瞅见,这哪行?万一有人搞破坏,那不就麻烦?

琢磨对策

还在用get方法?禁止get方法调用更安全!

于是我就开始琢磨,得想个法子把这GET方法给禁。遇到问题就喜欢上网查资料,看看别人都是咋弄的。这一查,还真发现不少门道。

有人说,GET和POST都不安全,从传输的角度来说,都是明文的。这话听着吓人,但仔细想想,咱也不能因噎废食。POST方法虽然比GET安全点,但也不是万无一失。而且很多时候,咱就是需要用GET方法来获取数据,这不能一刀切。

还有人提到,Java EE里头有个叫j_security_check的机制,可以用来做身份验证。这玩意儿我之前也听说过,但没咋用过。这回正可以拿来试试。

动手实践

说干就干,我先是在项目里头把那些敏感的接口都梳理一遍,看看哪些是可以用POST方法替代的。能换的,咱就尽量换成POST。这样,至少能减少一部分风险。

然后,对于那些实在没法换的,或者就是用来获取数据的接口,我就开始琢磨怎么禁止GET方法。这里,我主要关注的是怎么在服务器端做文章。毕竟客户端那边咱也没法控制,人家想用啥方法就用啥方法,咱也管不着。

还在用get方法?禁止get方法调用更安全!

在服务器端,我试几个法子。我想着直接在代码里头判断一下请求方法,如果是GET就直接返回错误。但这法子有点笨,每个接口都得加一段代码,太麻烦。

后来我想到一个更简单的法子。既然咱用的是Java,那就可以利用Java的Web框架来做这事儿。我这项目用的是Spring,里头有现成的配置可以用来限制请求方法。我只需要在配置文件里头,把那些需要保护的接口的允许请求方法设置成POST就行。这样,如果有人用GET方法来访问,服务器就会直接拒绝,连代码都不用改。

最终实现

经过一番折腾,我这项目算是把GET方法给“管”起来。这也不是说就万事大吉,毕竟安全这事儿,没有绝对的。但至少,咱把能做的都做,心里头也踏实多。

这回实践让我对Web安全有更深的认识。也让我明白一个道理:做项目,不能只图方便,还得考虑安全。不然,出问题,后悔都来不及。

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。

目录[+]