Java 带有隐藏Id的链接
我正在使用Java、SpringMVC、Hibernate和MySql 我有个问题。在数据库中我有用户实体。某些用户具有管理员角色。 若用户有管理员角色,可以创建项目旅行,如“去非洲”,并可以加入其他人 当具有管理员角色的用户登录到系统时,在第一个站点中他会看到由他创建的项目。他可以点击任何项目。例如“去非洲”。然后他和朋友一起上榜。 但是 指向特定项目的链接如下所示:Java 带有隐藏Id的链接,java,mysql,hibernate,spring-mvc,Java,Mysql,Hibernate,Spring Mvc,我正在使用Java、SpringMVC、Hibernate和MySql 我有个问题。在数据库中我有用户实体。某些用户具有管理员角色。 若用户有管理员角色,可以创建项目旅行,如“去非洲”,并可以加入其他人 当具有管理员角色的用户登录到系统时,在第一个站点中他会看到由他创建的项目。他可以点击任何项目。例如“去非洲”。然后他和朋友一起上榜。 但是 指向特定项目的链接如下所示: <a href="managementProject?idProject=${id_project}">Pr
<a href="managementProject?idProject=${id_project}">ProjectXX</a>
如果为true,用户可以将人员添加到项目中。如果为false,modelAndView返回403页(类似于“您没有权限”
但我不知道,这真的是一个很好的解决方案。也许有人有更好的?
对不起我的英语
谢谢!我不理解这个问题,必须进行服务器端安全检查。如果您想发布请求,只需使用HTML表单-您仍然需要执行服务器端安全检查…要使用表单和帖子,请向每个锚添加Javascript处理程序,将表单ID保存在隐藏输入中,然后提交表单。服务器ide安全性仍然是必须的。如果希望
idProject
值在url中不是纯文本,可以对其值(Base64)进行编码然后在服务器端对其进行解码。但是,这只是表面上的修复,任何人都可以解码,如果他们愿意的话。@主要问题是当我在url中更改id时,因为这样我就可以访问某个项目。不是我的。好的,另一个问题看起来像我文章中的问题。当我在项目中有列表用户时,我可以删除一些人。这不是good解决方案,因为如果我在url中写入诸如:localhost:2233/managementProjct/delete?id=5或6或7之类的内容,我可以删除其他人。我只希望对我的项目具有访问权限。@Lukas:这正是我的意思-您必须对每个请求在服务器端执行安全验证(HTTP协议不支持数据安全检查)。HTTP Post只会隐藏参数,因为这些参数没有显示在浏览器URL中,但攻击者仍然可以使用诸如curl之类的工具访问受限数据。
private boolean checkAuth(int idProject,User user){
List<Project> projectList = new ArrayList<Project>(user.getProjectsAdministrators());
for(Project project:projectList){
if (project.getId_project()==idProject){
return true;
}
}
return false;
}