最近,我一直在使用JQuery,AngularJS& amp; AJAX。对于服务器端编码,我使用Java,Spring。
问题:在HTML网页中存储数据库ID是否安全?例如:业务域对象HOUSE具有名为AIR_CONDITION的属性。如果用户想要通过UI更新AIR_CONDITION的类型,是否可以将HOUSE_ID存储在html中,可以用来在数据库中保存AIR_CONDITION的更新值?
例如:代码
<form action="updateAirCondition?houseId=22">
<input type="checkbox" name="central" value="central"> Central air condition
<input type="checkbox" name="external" value="External" checked> External air condition
<input type="submit" value="Submit">
</form>
更新:服务器端Java Spring Security应用程序将具有高度安全性,如果用户未获得授权,则不会更新数据库中的行。我唯一担心的是SQL注入,无论如何,最好还是让用户隐藏服务器端的东西(服务代码或数据库)。
答案 0 :(得分:3)
阻止用户在没有权限的情况下更新记录的问题在某种程度上与是否可以公开特定ID无关。即使您没有在html中公开id,也有其他方法可以发现id:例如,暴力迭代。依靠主键ID的保密来强制执行安全性是一种典型的失败模式,称为security through obscurity。您应该进行服务器端检查以防止未经授权的更新。例如,检查当前登录的用户是否拥有他们尝试更新的记录。在网址中公开主键通常很好。例如,StackOverflow具有问题页面和用户配置文件页面中的主键。
答案 1 :(得分:1)
我觉得最好的办法是加密那个id号然后解密它的服务器端。这样,用户无法改变它以影响其他行,并且您不会将结束信息传递给用户。