我想在Thymeleaf
中对字符串或任何基元值进行编码,并在服务器上进行相同的解码,主要是路径变量或隐藏字段。实际上我出于安全原因想要这个。
努力
<a th:href="@{/administrator/{id}edit/(id=${data.id})}" class="instructionbt">Edit</a>
这是一个编辑数据的简单链接,可以在网址中看到:
localhost:8080/testapp/administrator/1/edit
但我想要像
这样的东西localhost:8080/testapp/administrator/$Htf1w==/edit
现在可以替换1乘2,3甚至任何数字,并且可以编辑任何数据。我希望1(id字段)必须编码,因此id很难猜到,普通用户不会直接编辑url。
我在互联网上搜索了很多,但我没有发现任何线索。我知道我可以使用Base64Utils
或任何类似的类来实现,但问题是如何在Thymeleaf.
请各位朋友帮助我。我被困在我的项目中,我的时间非常少。
答案 0 :(得分:1)
普通用户无论如何都不会编辑网址。 Base64永远不会停止非“正常”的用户。这是肯定的,这就是为什么你不会在互联网上找到任何东西。您需要保护资源服务器端 - 例如检查数字1是否属于当前用户,他可以编辑它。
跳过这些检查是一个非常常见的安全漏洞,并且是OWASP Top 10列表的一部分。它是A4-Insecure Direct Object References。请阅读有关此漏洞的更多信息以及如何防止它。简而言之:
每次使用来自不受信任来源的直接对象引用都必须包含访问控制检查,以确保用户获得所请求对象的授权。