网购
点击蓝字,关注我们
大家好,我是一名大厂全栈工程师,擅长Java后端,Vue前端,小程序编程,Python编程,AIGC等技术。我会分享一些相关的知识干货,以及互联网一些热点话题,感兴趣的话就关注我吧,希望对你有所帮助
01
某程序员入职国企,开发接口时,根据接口的功能,分别使用了put和delete类型,没有想到前端开发看到后,直接让他统一改成post。
不过很多网友却并不站在楼主这边,更有人说楼主这是培训傻了,培训仔不要造次,公司规范应该在八股文之上。
不要搞特殊,应该遵守公司的规范,同时前端开发的工作量也会小一些,可以复用现有的代码。
也有很多网友就restful各种方法的安全性进行了讨论,有一部分人认为,post要比put和delete要安全,所以要使用post方法。
但是也有人表示不认同,认为安不安全和使用的协议有关,和业务逻辑处理有关,而和使用的put方法还是post方法没有任何关系。
更有人举例进行了说明,假如写了两个接口,一个put,一个post,相同的业务逻辑,post不做任何参数校验,而put方法中做参数校验,请问哪个更安全?他认为那些说put和delete没有post安全的人,都是面试八股文背傻了的人。
不过更多数人还是同意将put和delete方法更改为post的,这样既统一又简单省心,可以减少不必要的麻烦,也能方便一下前端同学。
很多人表示,自己工作十几年了,从来没有使用过put和delete,不止国企,现在互联网公司也是基本只使用get和post。
02
对于上面的讨论,除了接口设计的繁琐性外,争议的焦点还在于RESTful接口的安全性。那么我们就来对比一下。
GET方法用于获取资源,具有幂等性和可缓存性,所以相对来说较为安全。因为GET请求通常是用于获取数据,不会对服务器资源进行修改,所以不会引起安全问题。但是,如果GET请求中包含了敏感信息,如用户的个人信息或者密码等,就需要对返回结果进行加密或者使用HTTPS协议进行传输,以防止信息泄露。
POST方法用于创建新资源,不具有幂等性。由于在数据的创建过程中,POST请求往往需要传递更多的数据和参数,存在一定的安全风险。在使用POST方法时,我们需要注意数据的合法性校验和防止SQL注入等安全问题。此外,在传输过程中,也建议使用HTTPS协议,以确保数据的传输安全性。
PUT方法用于更新已有资源,具有幂等性。在使用PUT方法时,我们需要对请求进行验证,确保更新的资源是合法的,并提供相应的权限控制机制,以防止非法修改或篡改数据。同样,建议使用HTTPS协议来确保数据的传输安全性。
DELETE方法用于删除资源,具有幂等性。在使用DELETE方法时,同样需要进行权限验证,以确保请求的合法性,并采取相应的安全机制来防止非法删除或者误删除数据。
RESTful接口作为一种设计规范,为我们提供了一种思维方式和标准,RESTful接口的安全性与我们的设计和实现密切相关。比如我们通常会进行以下设计来保证接口的安全性。
1、身份验证:如基本身份验证,令牌验证,OAuth等,可以验证请求的发送者身份,并确保只有经过身份验证的用户才能访问受保护的资源。
2、访问控制:如基于角色的访问控制和基于权限的访问控制,可以限制用户对资源的访问,并确保只有授权用户可以执行特定操作。
3、数据传输安全:如使用HTTPS协议进行传输数据。
4、输入验证:对接口接收到的输入数据进行严格的验证和过滤,包括对URL参数、请求头、请求体等的处理,以防止注入攻击、跨站脚本攻击或其他安全漏洞的利用。
好了,对于这一话题,你有哪些看法呢,欢迎留言讨论,觉得不错的可以点赞分享加关注哦。
热门推荐
💗 互联网公司年终奖发放时间爆料,华为遥遥领先
💗 某新员工大量使用Lambda表达式,却被老员工喷是屎山
💗 某程序员使用vim查看生产文件,遭到甲方臭骂,原因竟是这...
程序员修炼
长按识别二维码,关注我们
程序员修炼的不止技术