问一个ASPNET MVC的问题。。。关于model层的。。。知道的回答吧。。。。有理就给分了。。。。。给了好过年。。。。。。。

xghabc 2014-01-15 09:38:22

#region Model
private decimal _currentprice;
private DateTime _time;
/// <summary>
/// 当时时价
/// </summary>
public decimal CurrentPrice
{
set{ _currentprice=value;}
get{return _currentprice;}
}
/// <summary>
/// 时间
/// </summary>
public DateTime time
{
set{ _time=value;}
get{return _time;}
}


这个是我的Model,是针对数据表生成的Model。

在MVC中,添加数据是这样的,
@Html.TextBoxFor(m => m.CurrentPrice)
@Html.TextBoxFor(m => m.time)

这样子,看上去没有问题。。。

但是,一看生它的HMTL代码。。。


当时就傻了。。。这样就把数据库子段给暴露了啊。。。

就是别人看你的HMTL代码,就可以知道,你数据结构了。。这要不太安全是吧。。

大家什么解放方法昵。。。
...全文
1080 43 打赏 收藏 转发到动态 举报
写回复
用AI写文章
43 条回复
切换为时间正序
请发表友善的回复…
发表回复
跳动de指尖 2014-01-22
  • 打赏
  • 举报
回复
引用 41 楼 xghabc 的回复:
[quote=引用 40 楼 pengqian098 的回复:] 数据层就用数据层的Model啦, web就用ViewModel,话说,知道有什么关系啊。
是的。。这个可以的。。但是,ViewModel转数据层的Model,多了一层程序。。。 对了。。不知道你的ViewModel是怎么设计的昵。。[/quote] ViewModel 根据你视图使用的情况来定义ViewModel。
xghabc 2014-01-22
  • 打赏
  • 举报
回复
引用 40 楼 pengqian098 的回复:
数据层就用数据层的Model啦, web就用ViewModel,话说,知道有什么关系啊。
是的。。这个可以的。。但是,ViewModel转数据层的Model,多了一层程序。。。 对了。。不知道你的ViewModel是怎么设计的昵。。
xghabc 2014-01-22
  • 打赏
  • 举报
回复
引用 42 楼 pengqian098 的回复:
[quote=引用 41 楼 xghabc 的回复:] [quote=引用 40 楼 pengqian098 的回复:] 数据层就用数据层的Model啦, web就用ViewModel,话说,知道有什么关系啊。
是的。。这个可以的。。但是,ViewModel转数据层的Model,多了一层程序。。。 对了。。不知道你的ViewModel是怎么设计的昵。。[/quote] ViewModel 根据你视图使用的情况来定义ViewModel。[/quote] 这个肯定啊。。我说,你的按什么规律设计,进而减少恶意用户通过命名,猜出数据库字段。。
跳动de指尖 2014-01-20
  • 打赏
  • 举报
回复
数据层就用数据层的Model啦, web就用ViewModel,话说,知道有什么关系啊。
小猪八Q 2014-01-19
  • 打赏
  • 举报
回复
我觉得有种真亦假来假亦真的感觉。 他即使知道你的字段,还有表名,他怎么能确认真的就是呢。 主要就是确保你的系统不存在sql注入。 在有sql注入的前提下,你所暴露的字段只是能够减少他猜测破解的时间而已
hxxx666 2014-01-19
  • 打赏
  • 举报
回复
学习学习学习
杰拉尔 2014-01-19
  • 打赏
  • 举报
回复
= = 只知道你的字段名 他也要懂你表名啊。。
xghabc 2014-01-18
  • 打赏
  • 举报
回复
引用 34 楼 qhttl 的回复:
@Html.TextBoxFor(m => m.CurrentPrice),只会生成出来的input 的name属性和id为CurrentPrice,当你吧model的字段命名和数据库的字段命名一摸一样的时候,别人在查看你的html源码就能知道你当前的这个字段在数据库的字段名字,但是他还是不可能知道你的数据库密码 账户,还是攻击不到你的,当然你也可以在model里面将字段的命名和数据库命名不写一样的就好了,生成出来的字段也就不一样了,上面的大哥们说得很清楚了,对于字段暴露没有任何问题,同时留下SQL注入的问题了,问题肯定就大了 现在的攻击最普遍的大多是注入(sql注入 脚本注入 上传注入) 流量攻击等 sql注入一般都不会存在了,我相信你也不会留这样的低级漏洞, 脚本注入,比如留言板,注入一段而已的js代码或者html代码 上传注入,用户上传头像什么的,如果你是通过后缀名判断就可以注入,将代码文件改成就jpg上传你就完蛋了 流量攻击最恶心,搞不好 vps被封,产生恶意费用等等,这才是你应该担心的,神马字段暴露,主要没有sql注入就没事
按道理是这样。。。还有点担心。。
HXY120919 2014-01-16
  • 打赏
  • 举报
回复
感觉好无聊的讨论
黑子大哥 2014-01-16
  • 打赏
  • 举报
回复
@Html.TextBoxFor(m => m.CurrentPrice),只会生成出来的input 的name属性和id为CurrentPrice,当你吧model的字段命名和数据库的字段命名一摸一样的时候,别人在查看你的html源码就能知道你当前的这个字段在数据库的字段名字,但是他还是不可能知道你的数据库密码 账户,还是攻击不到你的,当然你也可以在model里面将字段的命名和数据库命名不写一样的就好了,生成出来的字段也就不一样了,上面的大哥们说得很清楚了,对于字段暴露没有任何问题,同时留下SQL注入的问题了,问题肯定就大了 现在的攻击最普遍的大多是注入(sql注入 脚本注入 上传注入) 流量攻击等 sql注入一般都不会存在了,我相信你也不会留这样的低级漏洞, 脚本注入,比如留言板,注入一段而已的js代码或者html代码 上传注入,用户上传头像什么的,如果你是通过后缀名判断就可以注入,将代码文件改成就jpg上传你就完蛋了 流量攻击最恶心,搞不好 vps被封,产生恶意费用等等,这才是你应该担心的,神马字段暴露,主要没有sql注入就没事
liuxiuming 2014-01-16
  • 打赏
  • 举报
回复
其实这个不用担心的,比如说,如果你的命名足够规范的话,你把TextBox的id命名和数据库的一样(我就是这么做的),别人一样能看到。
liuxiuming 2014-01-16
  • 打赏
  • 举报
回复
我也是这么赋值的:@Model.xxx
aqbeyond 2014-01-16
  • 打赏
  • 举报
回复
那你自己再封装一个Viewmodel呀,然后映射你的DBModel,就可以了吧
tptptp00 2014-01-16
  • 打赏
  • 举报
回复
知道字段名没什么关系 不过你认为有关系的话就用input标签呗 自己再指定个name到后台在封装下不就得了
xghabc 2014-01-16
  • 打赏
  • 举报
回复
来人来讨论啊。。。。。。。
xghabc 2014-01-15
  • 打赏
  • 举报
回复
引用 12 楼 wanghui0380 的回复:
???? 你所谓滴暴露是什么??是说input滴name名??? name名怎么了,name名就不能是和数据库同名的sex,而一定要是txtsex?? 额,难道你真写个txtsex滴input name名我就不知道你数据库里有存储性别的字段??这不是自己骗自己么??逻辑上应该如此,那么性别就应该有字段存,我管你起什么名字做什么,逻辑上如此就如此,别说你起个txtsex就把我给骗了,我就不知道你数据库肯定有个字段存sex
不会啊。。比如说,我起名字起textse..不起textsex, 这样的话。。你只知道前三个字。。后出还在你不知道的。。
xghabc 2014-01-15
  • 打赏
  • 举报
回复
不知道啊。。客黑功击的时候,。。总想办法,猜测你的数据库字段。。 现在好了。。全部暴露出来了。。 具体有什么安全问题。。我也答不出来。。 所以,问问大家呗。。。。
H_Gragon 2014-01-15
  • 打赏
  • 举报
回复
即使知道你的数据字典又不知道你数据库用户名密码没事的!
_moli 2014-01-15
  • 打赏
  • 举报
回复
引用 8 楼 xghabc 的回复:
[quote=引用 7 楼 caozhy 的回复:] [quote=引用 6 楼 xghabc 的回复:] [quote=引用 5 楼 caozhy 的回复:] Html.TextBoxFor 这个叫“脚手架”代码,说白了,就是让你快速先构建一个原型程序用的占位符。 你当然不应该在生产代码里面用。
是啊。。。但是,有一个问题啊。。。如果,你不用这个model,那么你在后台UpdateModel()接受model的时候,使用的是其它model时,还多了一步,将这个model转到原来的model,如果不转换,后台接受的model的又不好使,因为命名跟数据库不符合,[/quote] 说实话,UpdateModel也是为脚手架服务的。真实情况,一个ViewModel很复杂,不但有很多类型的数据,还有潜逃层次关系,用UpdateModel只会越搞越忙。[/quote] 这个真不知道。。我想啊。。再复杂,也就GET和POST,POST就是接受比单,接受比单就是UpdateModel(),然后BLL作数据处理,处理完交给DAL层。。 潜逃层次关系是什么意思啊。。。用起MVC,我觉得UpdateModel帮了很多忙啊。。[/quote]++
wanghui0380 2014-01-15
  • 打赏
  • 举报
回复
???? 你所谓滴暴露是什么??是说input滴name名??? name名怎么了,name名就不能是和数据库同名的sex,而一定要是txtsex?? 额,难道你真写个txtsex滴input name名我就不知道你数据库里有存储性别的字段??这不是自己骗自己么??逻辑上应该如此,那么性别就应该有字段存,我管你起什么名字做什么,逻辑上如此就如此,别说你起个txtsex就把我给骗了,我就不知道你数据库肯定有个字段存sex
加载更多回复(23)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧