2015-02-17 75 views
1

最近我一直在使用JQuery,AngularJS & AJAX做一些前端代码。对于服务器端编码,我使用Java,Spring。将数据库ID存储在HTML页面中安全吗?

问题:将数据库id存储在HTML页面中安全吗?例如:业务域对象HOUSE具有名为AIR_CONDITION的属性。如果用户想要通过UI更新AIR_CONDITION的类型,可以安全地将HOUSE_ID存储在可用于将更新后的AIR_CONDITION值保存到数据库中的html中?

如:代码

<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注入,无论如何总是让用户隐藏服务器端的东西(服务代码或数据库)总是更好。

+3

请注意,用户可以将其更改为他们希望的任何值,这意味着他们可以更新他们选择的表中的任何行(您可能不想这么做)。如果他们不应该能够更新任何房子,那么这是不安全的。 – 2015-02-17 22:03:27

回答

3

防止用户更新记录时,他们没有权限这样做的问题有点独立于是否可以公开某个特定的id。即使你没有在html中公开id,也有其他方法可以发现id:比如蛮力迭代。依靠主密钥的秘密来加强安全性是一种典型的故障模式,称为security through obscurity。您应该有防止未经授权更新的服务器端检查。例如,检查当前登录的用户是否拥有他们试图更新的记录。在URL中公开主键通常很好。例如,StackOverflow在问题页面和用户配置文件页面中具有主键。

+0

非常感谢。我已经更新了这个问题。服务器端代码在域级别使用Spring Security进行高度安全保护。我只是想知道是否暴露主键是正常的事情。谢谢你回答解决我的查询。 – hajime 2015-02-17 23:05:45

1

我觉得最好的办法是只加密该号码,然后解密服务器端。这样用户不能改变它来影响其他行,并且不会将最终信息传递给用户。

相关问题