我有一个ReactJS前端应用程序和一个Laravel后端应用程序。
我遇到了auth问题。我正在使用Laravel auth对用户进行身份验证,但是在显示组件时遇到了一些麻烦。我有一些帖子(/ posts / 1或/ posts / 2等),当用户访问该页面时,如果他是作者,则可以修改该帖子。
我将用户的ID作为状态存储,并进行如下检查:
if(this.props.user.id === this.props.posts.id_user) ...
但这确实是不安全的,因为任何人都可以使用dev工具来修改状态。通过修改状态,即使他不是作者,用户也可以对其进行修改,因为管理该编辑的所有显示组件都可以被他访问。
是否有一个“魔术”技巧可以阻止它?
答案 0 :(得分:2)
首先,您要谈论的state
是app state
,它是驻留在浏览器中的data
,如果用户更改状态,则效果只会受到用户本身的影响,从理论上讲,除非您没有实现与您正在谈论的相同的验证,否则在他的浏览器/数据库中,state
或if(this.props.user.id === this.props.posts.id_user)
不会改变。
如果您在前面进行useradd master
passwd master
chmod 700 /home/master
useradd -G master user1
passwd user1
usermod -a -G user1 master
chmod 770 /home/user1
useradd -G master user2
passwd user2
usermod -a -G user2 master
chmod 770 /home/user2
,则绝对必须在后面进行,这才是真正验证的地方,这是用户无法更改用户ID的地方,因为例如,您将在用户会话中使用存储在cookie或Redis服务器中的那一个。
始终在后端进行验证