我正在用纯 PHP 为我自己的初学者项目构建 REST API。 API 将具有 CRUD 功能,其中“R”可供所有用户(包括未经身份验证的用户)使用,而“CUD”功能仅适用于经过身份验证的用户。这只是我的项目,所以安全性并不是很重要,但我想了解它的实际考虑和实施方式。我目前的理解和实现如下。
我真正想知道的是 -
我读到很多人都说在这样的 REST API 中使用会话会减损安宁性,因为服务器上存储了一些状态(在会话中,我想这将在数据库中)。这就是我必须以这种方式实现它的原因,因为我也不想每次向受保护的路由发出请求时都访问数据库。但是我的实现还包括服务器上永远不会改变的 SECRET_SALT。所以我想知道它是否偏离了安息?毕竟,客户端会随请求一起发送所有必需的信息,并且服务器上并未存储特定客户端的特定状态。
有没有办法以纯 PHP 方式实现中间件,在一组特定的路由之前调用它,因为我有点重复自己在每个受保护的路由前执行 require() 。我在我的项目中创建了一个名为 /api 的文件夹,并将所有端点文件放在那里。例如localhost/api/read.php(PS。我可以看到所有的库都在做这个,我想用纯PHP实现)
我知道这不是安全的做事方式,因为即使使用 httponly,令牌也可以在非 HTTPS 连接中被嗅探,并且除非用户名更改,否则它们永远不会为特定用户更改。我可以看到许多用于进行身份验证的库,但我不想将任何库用于 JWT 和 OAuth 之类的东西,那么是否还有其他不那么笨拙且更安全的仅限 PHP 的方法可以通过遵循 REST 协议来执行,或者我应该坚持存储会话并访问数据库?
提前感谢您的回答。