Tag: 安全

如何加密密码以便以后将其保存在数据库或文本文件中?

我希望我的应用程序保存在数据库或文本文件中加密的密码。 假设数据库或文本文件可以由任何人打开,我该怎么做? 重复 加密/散列数据库中的纯文本密码 不重复我要求特定于.NET的代码 编辑:我保存密码供以后使用。 我需要对其进行解码并使用它进行登录。 它不一定非常安全,它只需要人眼不可读,并且难以用琐碎的脚本解码。

ASP.NET MVC中基于文档的安全性

我已经了解ASP.NET MVC中的用户和基于角色的安全性。 但现在我需要一些更精细的东西。 假设我有一份文档列表,其中一些是用户授权的,有些则不是。 每个文档在数据库的文档表中都有相应的记录。 如果用户具有安全访问权限,则可以下载文档以供查看。 如果您有角色,也可以添加文档。 每个文档都有一个URL,每个文档列表都有一个URL。 我想安全修整列表,以便用户只能看到他授权的那些文档。 但是我还需要对这些列表和文档的URL请求进行身份validation,因为没有什么可以阻止用户为他们不再有权访问的文档添加书签,或者只是在浏览器中键入URL。 内置的基于角色的安全模型是否适用于此,或者我是否需要创建单独的基于表的安全性? 我可以将安全性放在我的存储库中,以便返回的记录已被修剪,或者它应该是控制器的一部分吗? 我是否需要安全属性来validation控制器请求,或者我应该将它作为前几行代码放在控制器方法中?

什么技术可以保护完全信任的用户的秘密?

我正在使用C#编程系统。 我的程序生成一个我想要存储在硬盘上的小消息(文件的哈希摘要) – 但我不希望用户能够读取它。 我打算加密这条消息,但有人建议这是一个不好的想法。 所以我正在寻找替代方案 – 您如何保护完全信任的用户的一些秘密信息?

在C#应用程序中保护数据层

我正在考虑如何在C#应用程序中保护数据层,在这种情况下,该层可以是与应用程序本身一起存储的LINQ to SQL模型图,其中包含连接字符串到SQL Server数据库。 或者它可以是应用程序和Web服务之间的连接。 要么需要强制某种安全性,例如,应用程序中的连接字符串可以很容易地进行逆向工程,并且可以轻松地跟踪和使用Web服务,这是出于应用程序原始目的之外的其他原因。 所以我的问题是更简短的方法: 在处理Web服务和/或从Windows窗体应用程序直接连接到SQL Server时,如何解决安全问题?

自动更新:这样安全吗?

点网自动更新 我觉得.net缺少一个简单安全的自动更新库,所以我已经实现了一些东西并把它放在这里 。 在任何人考虑使用该库之前,我都热衷于更新过程以获得一些同行评审。 以下是步骤: 客户端软件填充有公钥和URI以进行轮询。 客户端轮询清单文件的URI。 下载清单并使用签名(在单独的“.signature”中)来检查清单是否有效。 从清单中解析待处理更新列表(向用户显示)。 下载安装程序文件,并再次使用相应的“.signature”文件进行validation。 (下载的文件将受ACL保护) 安装程序已运行。 减轻威胁: 清单签名应该可以防止任何恶意下载(“ 地毯式轰炸 ”) 安装程序签名应防止任何MITM攻击发送恶意安装程序 使用ACL保护下载的安装程序应该可以防止任何本地升级攻击。 未减轻的威胁: MITM攻击,攻击者始终报告“没有可用更新”。 (可能使客户端处于易受攻击的版本) 参考文献: 安全的软件更新:令人失望和新的挑战 Black Ops 2008:它是我们所知道的缓存的终点 邪恶将毁灭我们所有人 我错过了什么?

如何为加密算法创建加密密钥?

我想使用.Net Security命名空间中提供的加密算法,但是我试图了解如何生成密钥,例如AES算法需要256位,即16字节密钥,以及一些初始化向量,这也是几个字节。 我可以在Key和IV中使用任何值的组合吗? 例如Key和IV中的所有零都有效吗? 我知道算法的细节做了很多xors,所以零不会有任何好处,但这些算法是否有任何限制? 或者我是否必须使用某些程序生成密钥并将其永久保存在某处? 我希望在加密后将数据存储在数据库中,安全配置文件数据,如用户名,密码,电话号码等,密钥将仅供连接字符串中提到的数据库用户使用,并且可供管理员使用。

RSA .NET加密Java解密

我试图通过使用RSA算法加密.NET中的字符串并在Java中解密结果。 目前,我已经能够做相反的事情(在Java中加密,在.NET中解密)。 在这里,我有我的代码实际工作(JAVA加密): byte[] modulusBytes = Base64.decode(“2rRVVVFJRbH/wAPDtnwZwu+nxU+AZ6uXxh/sW+AMCBogg7vndZsnRiHoLttYYPqOyOhfgaBOQogrIfrKL4lipK4m52SBzw/FfcM9DsKs/rYR83tBLiIAfgdnVjF27tZID+HJMFTiI30mALjr7+tfp+2lIACXA1RIKTk7S9pDmX8=”); byte[] exponentBytes = Base64.decode(“AQAB”); BigInteger modulus = new BigInteger(1, modulusBytes ); BigInteger exponent = new BigInteger(1, exponentBytes); RSAPublicKeySpec rsaPubKey = new RSAPublicKeySpec(modulus, exponent); KeyFactory fact = KeyFactory.getInstance(“RSA”); PublicKey pubKey = fact.generatePublic(rsaPubKey); Cipher cipher = Cipher.getInstance(“RSA/ECB/PKCS1Padding”); cipher.init(Cipher.ENCRYPT_MODE, pubKey); byte[] plainBytes = new String(“big kitty dancing”).getBytes(“UTF-8”); byte[] cipherData = cipher.doFinal( […]

使用会话状态是一种不安全的方式来在asp.net中创建用户登录和角色

考虑一个设置,其中id和密码列表存储在服务器上的数据库中,当用户输入他的登录凭据时,代码隐藏对服务器validation它并设置诸如Session [“id”] Session [“login”之类的值“]确定用户是否有权访问某个页面。 当用户尝试浏览页面时,页面会查看会话变量,然后根据需要重新定位用户并相应地调整其页面上的按钮。 这种设置有多安全。 asp.net的内置登录和角色function似乎过于严格,所以我试图探索其他选项。

如何确保.Net应用程序是真的?

在客户端 – 服务器应用程序中,服务器如何知道请求来自真正的应用程序而不是来自它的篡改副本? 我还没有开发客户端和服务器应用程序。 解决方案可能是普通套接字,wcf,IIS托管或其他。

指定的填充模式对此算法无效 – c# – System.Security.Cryptography

对c#来说很新,目前在解密长密码时遇到问题,错误是 指定的密钥不是此算法的有效大小 我知道这与加密密码位长度不受支持有关,但不确定如何建议允许这些更长密码的方法。 这是我的加密和解密 “cipherKey”:“0123456789abcdef”,“cipherVector”:“somereallycooliv” using System; using System.Security.Cryptography; using System.IO; using System.Text; namespace DataApi { public class Encryption { private readonly IConfigurationService _configService; private const string _vector = “cipherVector”; private const string _key = “cipherKey”; public Encryption(IConfigurationService configService) { _configService = configService; } public string EncryptString(string text) { if(string.IsNullOrEmpty(text)) { return “”; } try […]