FineUI 官方论坛

标题: 【已采纳】FineUI控件的回发参数校验(MAC验证) [打印本页]

作者:        时间: 2016-10-1 11:02
标题: 【已采纳】FineUI控件的回发参数校验(MAC验证)
FineUI没有用ViewState而使用了F_STATE,但是也有一个问题,F_STATE 里的数据回发到后台没有校验数据是否被篡改,控件数据回发到后台也没有做校验。这样就容易有安全问题,恶意用户可以修改F_STATE的值或者控件的回发值,比如,给绑定数据库源的dropdownlist、grid 增加、修改一些值,回发到后台就可以越权访问甚至越权修改。

而在.net framework中有视图状态MAC和事件校验,viewstate可配置加密,只要用户在前台篡改了绑定数据源的控件生成的表单选项的值,就会抛出异常。
FineUI是否应该也增加一个事件校验或数据源选项、F_ITEMS的MAC验证机制?

作者: zy32002    时间: 2016-10-1 11:53
viewstate 一样可以解密,照你这逻辑一样可以篡改。如果数据真需要保密,应该加密数据流,需要你自己写规则。
作者:        时间: 2016-10-1 12:30
zy32002 发表于 2016-10-1 11:53
viewstate 一样可以解密,照你这逻辑一样可以篡改。如果数据真需要保密,应该加密数据流,需要你自己写规则 ...

web.config/IIS 配置加密 不知道密钥就不可以解密了,解码base64后得到的也是加密的,篡改不了。

其实FineUI源码也好改
增加一个MAC属性。
FState也增加一个:FState.AddModifiedProperty("MAC")....
生成F_Items后,生成一个Hash用密文加密
数据回发后,将回发的F_Items用同样的密文加密,与回发的MAC比较。
只要F_Items与MAC修改了任何一个都会有问题,而只要密文不知道,客户端就算不出来篡改后的MAC。
作者: sanshi    时间: 2016-10-4 09:01
    发表于 2016-10-1 12:30
web.config/IIS 配置加密 不知道密钥就不可以解密了,解码base64后得到的也是加密的,篡改不了。

其实Fi ...

是可以这么增强......
作者: sanshi    时间: 2016-10-16 22:22
多谢指出。

下个版本(FineUI v6.0.0),我们会增加配置项EnableFStateValidation(默认为true),对F_STATE进行服务器端验证,防止客户端篡改(8846)。




欢迎光临 FineUI 官方论坛 (https://fineui.com/bbs/) Powered by Discuz! X3.4