ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
### RESTful API的请求类型有哪些? GET 从服务器取出资源 POST 在服务器新建一个资源 PUT 在服务器更新资源(客户端提供改变后的完整资源) PATCH 在服务器更新资源(客户端提供改变的属性) DELETE 从服务器删除资源 HEAD 获取资源的源数据 OPTION 获取信息 关于资源的那些属性是客户端可以改变的 接口的安全性 1. 选https协议代替http协议这样,避免明文传输数据 2. 对一些开放的接口做数字签名 3. 对有登录操作的接口,先通过登录获取访问的令牌,之后访问其他需要登录的接口 通过携带这个令牌进行访问。 登录认证机制中session和jwt对比 session的登录原理: 客户端(client) 提交 用户名 密码(或验证码)给服务端(server),服务端校验通过后, 服务端会生成身份认证相关的session数据,服务端将session数据保存在文件或者内存中,并且将session_id 返 回给客户端,客户端将返回的session_id保存在cookie中。此后客户端请求服务端时都会在cookie中携带session_id。 服务端通过校验session信息是否存在,如果存在判断用户是否处于登录状态以及用户具有的权限。通过校验就返回该有的 数据,没通过校验返回登录页。 session 的优势和劣势 优势: 1. session可以主动清除 2. session保存在服务端相对安全 3. 结合cookie使用 较为灵活 兼容性好 劣势: 1. cookie+ session 在跨域场景下表现不好 2. 如果是分布式部署,需要多机器共享session机制,实现方法可将session存储到数据库或者redis 中,这样查询session信息时需要进行数据库的操作 3. 基于cookie的机制很容易被CSRF攻击 jwt 的登录原理: 客户端(client) 提交 用户名 密码(或验证码)给服务端(server),服务端校验通过后,将用户的 id 和其它信息做为JWT playload(负载),将其与头部分别进行Base64编码拼接后签名,形成一个JWT,形成的JWT就是 形同,lll.zzz.xxx的字符串。后端将JWT字符串作为登录成功的返回结果,返回给前端。前端可以将返回结果保存在localStorge 或sessionStorage上,退出登录前删除保存的JWT即可。前端在每次请求时将JWT放在http header中的Authorization位 (解决XSS和XSRF攻击)。后端检查是否存在,如果存在验证JWT的有效性。例如检查签名是否正确,检查token是否过期 检查token的接受方是否是自己(可选)验证通过后,后端使用JWT中包含的用户信息进行其他的逻辑操作,返回相应的结果。 jwt 和 session的区别 session 的状态是存储在服务端的,客户端只存储session_id ,而token的状态存储在客户端 (因为信息全部放在客户端所以需要密码学的方法进行签名和加密) 分布式系统中session 共享是一个问题,session存在服务端,随着用户数量增多,会大幅降低服务端的性能 在多个域名下,会存在跨域问题,安全性方面cookie保存在本地,容易被人利用进行CSRF攻击