标签: encryption

在页面之间传递数据的最佳实践

问题

在我们在项目之间重用的堆栈中,我们在会话中放置了一些过多的数据,用于在页面之间传递数据.这在理论上是好的,因为它可以防止篡改,重放攻击等,但它会产生尽可能多的问题.

会话丢失本身是一个问题,尽管它主要通过实现会话状态服务器(或使用SQL Server)来处理.更重要的是,使后退按钮正常工作非常棘手,而且创建一种情况也是额外的工作,用户可以在三个选项卡中打开相同的屏幕来处理不同的记录.

这只是冰山一角.

大多数这些问题都有解决方法,但是当我磨砺掉时,所有这些摩擦让我觉得使用session在页面之间传递数据是错误的方向.

我真正想要做的是提出一个最佳实践,我的商店可以一直使用它来在页面之间传递数据,然后,对于新的应用程序,替换当前依赖于Session的堆栈的关键部分.

如果最终解决方案不会导致大量的样板管道代码,那也很好.

提出的解决方案

会议

如上所述,严重依赖Session 似乎是一个好主意,但它会打破后退按钮并导致其他一些问题.

可能有办法解决所有问题,但似乎需要做很多额外的工作.

使用会话非常好的一件事是篡改不是问题.与通过未加密的QueryString传递所有内容相比,您最终编写的守护代码更少.

跨页发布

事实上,我几乎没有考虑过这个选择.我有一个问题,它如何使页面紧密耦合 - 如果我开始做PreviousPage.FindControl("SomeTextBox"),这似乎是一个维护问题,如果我想从另一个页面可能没有到达此页面一个名为SomeTextBox的控件.

它似乎也受到其他方面的限制.也许我想通过链接访问该页面.

请求参数

我现在正倾向于这种策略,就像在过去那样.但我可能希望我的QueryString被加密以使其更难以篡改,我也想处理重放攻击的问题.

来自Rolla的4个人,有一篇关于此的文章.

但是,应该可以创建一个HttpModule来处理所有这些并从页面中删除所有加密香肠.果然,Mads Kristensen有一篇文章,他发布了一篇文章.但是,这些评论听起来似乎有极其常见的情况.

其他选择

当然,这不是对选项的详尽看法,而是我正在考虑的主要选项.此链接包含更完整的列表.我没有提到的那些如Cookies和Cache不适合在页面之间传递数据.

在结束...

那么,您如何处理页面之间传递数据的问题?你需要解决什么隐藏的陷阱,是否有任何预先存在的工具可以完美地解决它们?难道你觉得你已经得到了你和完全满意的解决方案?

提前致谢!

更新:以防万一我不够清楚,通过'在页面间传递数据'我正在谈论,例如,将CustomerID密钥从CustomerSearch.aspx页面传递给Customers.aspx,客户将在那里打开并且可以进行编辑.

asp.net encryption webforms query-string

64
推荐指数
4
解决办法
4万
查看次数

加密/散列数据库中的纯文本密码

继承了一个Web应用程序,我刚刚在SQL Server数据库中以纯文本形式存储了超过300,000个用户名/密码.我意识到这是一件非常糟糕的事情.

知道我必须更新登录和密码更新过程以加密/解密,并且对系统其余部分的影响最小,您会建议从数据库中删除纯文本密码的最佳方法是什么?

任何帮助表示赞赏.

编辑:对不起,如果我不清楚,我打算问你的加密/哈希密码的程序,而不是特定的加密/散列方法.

我应该只是:

  1. 备份数据库
  2. 更新登录/更新密码代码
  3. 几小时后,浏览用户表中记录密码的所有记录并替换每个记录
  4. 测试以确保用户仍然可以登录/更新密码

我想我的关注更多来自于大量的用户,所以我想确保我正确地做到这一点.

security encryption passwords security-by-obscurity

63
推荐指数
3
解决办法
4万
查看次数

在.NET C中存储加密密钥的最佳方式#

在我们的应用程序中,我们有许多敏感的配置设置,我们将其存储在再次加密的xml文件中.

必须在运行时解密此安全文件并读取配置值.但是出现了一个问题,密钥和初始化向量在代码中是硬编码的,因此任何人都可以使用Reflector读取它.

在.NET中存储加密密钥的最佳方法是什么,所以没有人可以使用Reflector读取它们?

.net c# security encryption

63
推荐指数
3
解决办法
5万
查看次数

Ansible:如何在单独的保险库文件中加密库存文件中的某些变量?

设置

考虑类似于以下示例的Ansible清单文件:

[san_diego]
host1
host2

[san_francisco]
host3
host4

[west_coast]
san_diego
san_francisco

[west_coast:vars]
db_server=foo.example.com
db_host=5432
db_password=top secret password
Run Code Online (Sandbox Code Playgroud)

问题

我想db_passwordAnsible库中存储一些变量(例如),但不是整个文件.

如何将保险库加密的ansible文件导入未加密的库存文件?

我试过的

我创建了一个加密的vars文件,并尝试使用以下命令导入它:

include: secrets
Run Code Online (Sandbox Code Playgroud)

为了这ansible-playbook与回应:

ERROR: variables assigned to group must be in key=value form
Run Code Online (Sandbox Code Playgroud)

可能是因为它试图将include语句解析为变量.

encryption ansible ansible-playbook ansible-vault

62
推荐指数
4
解决办法
6万
查看次数

RSA私钥密码如何在幕后工作?

可以为RSA私钥分配一个"密码",根据我的理解,它可以提供一些二级安全性,以防有人使用私钥文件.

如何实施密码短语安全层?

security encryption rsa

61
推荐指数
3
解决办法
6万
查看次数

AES加密 - 密钥与IV

我正在处理的应用程序允许用户加密文件.文件可以是任何格式(电子表格,文档,演示文稿等).

对于指定的输入文件,我创建了两个输出文件 - 加密数据文件和密钥文件.您需要这两个文件才能获取原始数据.密钥文件必须仅适用于相应的数据文件.它不适用于来自同一用户或任何其他用户的任何其他文件.

AES算法需要两个不同的加密参数,一个密钥和一个初始化向量(IV).

我看到了创建密钥文件的三种选择:

  1. 在应用程序中嵌入硬编码IV并将密钥保存在密钥文件中.
  2. 在应用程序中嵌入硬编码密钥并将IV保存在密钥文件中.
  3. 将密钥和IV保存在密钥文件中.

请注意,它与不同客户使用的应用程序相同.

看起来所有三种选择都会实现相同的最终目标.但是,我想就正确的方法应该得到您的反馈.

encryption aes

61
推荐指数
4
解决办法
8万
查看次数

存储加密密钥 - 最佳实践?

我有一个使用对称加密算法的Web应用程序.

你将如何存储密钥和初始化向量?在代码中存储为文字似乎是一个坏主意.应用设置怎么样?这里的最佳做法是什么?

encryption configuration

60
推荐指数
3
解决办法
4万
查看次数

AES/CBC和AES/ECB加密后的数据大小

我想知道AES加密后数据的大小,这样我就可以避免缓冲我的后AES数据(在磁盘或内存上),主要是为了知道大小.

我使用128位AES和javax.crypto.Cipherjavax.crypto.CipherInputStream加密.

使用各种输入大小执行的一些测试表明,如下计算的后加密大小是正确的:

long size = input_Size_In_Bytes; 
long post_AES_Size = size + (16 - (size % 16));
Run Code Online (Sandbox Code Playgroud)

但我不确定上述公式是否适用于所有可能的输入尺寸.

有没有办法在应用AES加密后计算数据大小 - 事先无需缓冲加密数据(在磁盘或内存上)以了解其加密后大小?

java encryption aes

60
推荐指数
4
解决办法
7万
查看次数

Cipher线程安全吗?

很简单,可以从多个线程中使用javax.crypto.Cipher(例如Cipher.getInstance("RSA"))一个实例,还是需要在ThreadLocal(在我的情况下)将多个实例中的多个实例中使用?

java encryption multithreading thread-safety

58
推荐指数
4
解决办法
2万
查看次数

PEM_read_bio_PrivateKey()仅在ECB模式下返回NULL

PEM_read_bio_PrivateKey()NULL如果私钥在ECB模式下由DES EDE加密,则返回.问题发生在EVP_DecryptFinal_ex():

4128:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:330:

如果在CBC模式下DES EDE对相同的私钥进行加密,则此功能正常.

我检查过,这个问题在openssl 0.9.8r/y版本(没有FIPS)上是可重现的.如果使用FIPS构建openssl,则不会发生此问题.

是什么导致这种行为?

谢谢!

encryption openssl pem private-key

58
推荐指数
1
解决办法
2396
查看次数