安全上传文件C#/ PHP

时间:2011-10-23 06:55:20

标签: c# php security hash

所以我目前没有代码,但由于以下问题,我还没有开始。

我希望有一个允许用户上传文件的网站(用PHP编写),但我也希望有一个在Windows桌面上运行的C#应用​​程序,并且可以自动上传文件。我的问题与安全有关。

首先,从PHP的角度来看,简单地使用MD5或类似的东西进行散列和腌制对于网站上的帐户是否真的安全?

此外,如何在C#应用程序中安全地存储和保存用户的凭据?几乎像饼干,除了我自己管理它。我正在寻找一个高水平的答案,以及我应该使用哪些具体工具(或者在完全追求这个之前我应该​​阅读的内容)。

提前感谢您的时间。 :)

2 个答案:

答案 0 :(得分:1)

回答这两个问题......

首先,MD5的散列和盐析不再是100%安全的,因为人们可以使用彩虹表来快速破解散列。您可能希望查看生成更长哈希的内容以防止彩虹表攻击。

如果要在客户端安全地存储身份验证令牌(如“记住我”复选框),您可以在服务器中创建一个表,每次用户访问php页面时都存储一个随机字符串。为了使其更安全,您可以使用该PC的唯一值进行哈希处理,例如网卡的MAC地址。

这是做什么......

1)当用户首次从c#app登录时,您将创建一条记录,用于存储该表中的用户ID,MAC地址和长随机字符串。然后,将此随机字符串返回到c#app以存储在本地文件中。

2)当c#app再次访问网页时,它将传递给您的PHP应用程序,MAC地址和存储在那里的随机字符串。如果它与记录匹配,那么我们就知道c#app的用户ID。

3)然后,php端应该重新生成另一个随机字符串并将其发送回c#app以覆盖现有的本地存储的身份验证令牌。这将确保令牌发生很大变化,人们不能简单地复制存储令牌的文件,并且能够访问服务器。

希望这很清楚。

答案 1 :(得分:-1)

  1. 盐渍sha256哈希会很好。用一些未存储在数据库中的东西来加盐。拥有来自两个不同来源的数据会使暴力变得更加困难。

  2. 这取决于C#app。如果它只有一个用户,那么使用您的公钥通过SSH传输文件。如果出现问题,您可以随时撤销密钥。