我不太确定在Hibernate中使用Spring MVC表单标记:
create table person (
phone_number varchar(20),
country_id int
)
因为如果你有一个具有以下结构的表:
public class Person (
String phoneNumber;
Integer countryId;
// setters and getters
)
然后hibernate会将它映射到这样的类:
<form:form method="POST" action="controller_path" modelAttribute="person">
<form:input type="text" path="phoneNumber"/>
<form:input type="text" path="countryId"/>
</form:form>
在春季jsp形式中,我们有:
<form method="POST" action="controller_path">
<input type="text" id="phoneNumber" name="phoneNumber">
<input type="text" id="countryId" name="countryId">
</form>
将生成以下html:
{{1}}
生成的html是否完全显示Person类的字段名称并不是不安全的,因为最终我认为有人可以猜出表的列名?
有没有办法防止这种情况发生?或者不用担心什么?
答案 0 :(得分:2)
如果您遵循Spring的完整MVC设置并使用hibernate / JPA /另一个ORM来检查参数的内容(有效地转义字符串/文本对象中的数据),以及是否在您插入数据的情况下你自己使用参数化语句,应该没问题。
编码建议存在巨大的矛盾:
1)不要显示与您在数据库中使用的参数名称相等的参数名称
2)和REST:拥有与列定义相同名称的对象。
由于人类在稍后查询数据库时喜欢某些可识别的列名,因此第二种建议似乎会被更多地使用。
(my)结论:假设您使用参数化语句,并检查要更新的对象的所有权,则不应该出现问题。