asp.net-mvc – 维护消息完整性
|
我有一条消息说我要传递给自己,这将受到中间人攻击.因此,我担心在发送消息之前保持消息的完整性以及我收到消息的时间. 应该假设,一旦我将消息发送给自己,将来我将无法获得有关所发送消息的信息.该消息完全是自包含的. 为此,我知道应该在发送消息之前对消息内容进行散列并比较散列,并且在发送消息之后,如果它们不同,则消息已被篡改. 当然,如果中间人知道散列实际上只是消息内容的散列,那么因为消息是自包含的,他只能创建新内容并应用相同的散列算法的内容. 问题是,在生成哈希时,我应该在多大程度上随机化消息内容?什么时候到达收益递减点? 在这种情况下,我有一组键/值对.为此,我知道我必须采取的步骤是: >在邮件中添加salt.盐是世界其他地方的秘密.它在散列之前附加到消息的内容. 这些是我正在考虑的可选步骤: >在我订购之前转换键.我考虑过逆转它们,然后按计数/键排序. 注意 此处不需要邮件隐私,因此我不寻求加密.值必须以纯文本形式传输. 最后,我应该避免哪些哈希算法? 细节 我有一个ASP.NET MVC站点,我有一个处理输入验证和持久性的控制器. 如果(基于启发式,它并不重要)输入被确定为自动垃圾邮件尝试,则IDictionary的模型< string,string>使用输入值创建,并将ViewResult发送到常规CAPTCHA页面. 在该视图中,在包含CAPTCHA控件的表单中,IDictionary的内容< string,string>将在隐藏的输入字段中写出,表单的操作将与内容最初发布到的操作相同.这样,MVC可以在重新提交表单时获取值. 这是因为我无法加密键/值对(或者我可以而且应该,告诉我为什么以及如何!). 当然,我需要再添加一个值,其中包含散列消息内容.如果该值存在,则控制器将检查是否保持了消息完整性,并允许输入持久存储. 解 我选择使用System.Security.Cyrptography.Pkcs命名空间中的SignedCms类,该命名空间表示CMS / PKCS#7消息的链接和验证. 为了详细说明,我已经使用MAKECERT.EXE创建了一个自行颁发的证书,然后在我的代码中,我使用此处的示例对数据进行数字签名: http://blogs.msdn.com/shawnfa/archive/2006/02/27/539990.aspx 现在,应该保持导出的私钥上的密码安全,以及服务器上的安全性,这使得它更少编程. 我将不得不为重放攻击的时间戳添加额外的密钥,但这不会太难. 答案是Kalium,而不是他的initial post,但他的后续评论指出了数字签名的方式,最终我发现了如何在.NET中使用它们. 感谢所有贡献的人. 解决方法我认为PGP / GPG就是你想要的.(编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 如何在ASP.NET MVC模型中为POST保存选定的DropDownList值?
- 我的ASP.Net代码可以从sendgrid得到确认邮件已发送吗?
- asp.net-mvc – Web API 2需要使用尾部斜杠来使自定义属性路
- 在ASP.NET Web API的JSON输出中没有时间的日期
- 非常非常简单的asp.net页面需要永远加载
- 如何在ASP.NET中以程序方式模拟HTTP POST?
- 如何从asp.net中的客户端网络摄像头捕获图像
- asp.net-mvc-4 – MVC 4 Razor如果拆分div标签
- 我可以首先使用EF代码和.net核心生成迁移脚本
- asp.net-web-api – 当启用CORS时,ASP.NET Web API中的异常
- asp.net – 为什么当使用ADO.NET实体数据模型映射
- 什么是ASP.NET应用程序部署的最佳实践
- asp.net – 如何正确地大写希腊字在.NET?
- asp.net-mvc – 通过NuGet升级到Microsoft.AspNe
- asp.net-mvc – ASP.NET MVC验证的唯一性
- asp.net – 哪个会员提供程序实现存储在web.conf
- asp.net-mvc – 直接下载链接到ASP.NET MVC 5 fo
- asp.net-mvc – 在MVC 3中写入只读会话
- asp.net-mvc – 是否由Razor支持lambda表达式?
- asp.net – 在.NET应用程序上使用Phantom JS生成
