应用程序从站点提取数据?

时间:2011-04-28 02:31:11

标签: c# php security protection

我期待在我的应用程序上获得尽可能少的信息,从而从网站或服务器中提取大部分数据,我希望听到有关该领域经验的每个人的建议和建议,以帮助我改进我的申请。

目前我的身份验证包括:

  • 要启动该应用程序,用户必须输入其用户名和密码(没有有效用户并通过该应用程序无效)并单击登录。
  • 凭据将使用 HTTPS 发送到我的登录页面,该脚本仅接受SSL连接和个性化的用户代理名称。
  • 登录页面将验证凭据并发回会话和一些初始数据。
  • 会话将重复用于随时间或根据需要收集更多数据。

旁注: SSL为256位,几分钟后会话自动失效

对于上述基本认证和数据提取,您会建议我实施其他任何内容吗?

我应该改变什么吗?

第二层保护

现在我想通过加密从/向我的应用程序发送的所有数据来实现更高的安全性,我的问题是:

  • 我应该使用什么来加密和解密数据,双方都持有一对私钥和公钥?还是RIJNDAEL的方法?
  • 我应该在客户端和服务器上留下什么样的正确方法或信息部分,或者我应该如何形成常用密码或密钥的知识?

    例如,如果我使用一对RSA密钥,我需要在客户端留下1个私钥和1个公钥,因为你无法使用c#上的公钥解密任何数据,而你可以在服务器上执行对于Rijndael来说,双方都需要有IV和钥匙。

    处理这些问题的正确方法是什么?

我会很高兴看到实用的阅读材料,评论,例子,建议和建议:)

更新

没有人想说什么?我希望能在这个问题上获得更多的意见,同时也很难理解这是一个相当常用的方法......

1 个答案:

答案 0 :(得分:1)

听起来你已经考虑了方程式应用程序方面的安全性。我建议你把你的想法转到网站的一部分。

当我看到安全性时,我总是看两件事:

  • 传输安全性 - 您的数据在传输过程中是否受到保护?听起来很糟糕,假设您在服务器上使用足够的密钥长度来获得SSL证书。此外,您可以强制网站执行客户端证书验证作为SSL握手的一部分。这确保了没有人可以欺骗客户端应用程序并说服您的网站共享信息。
  • 有效负载安全性 - 您应该加密数据有效负载吗?是否有人可能会闯入您的网络服务器,或者更好的是,通过DNS中毒或其他方法,说服您的应用程序连接到具有有效(针对该cn)但不同HTTPs证书的恶意服务器?如果您选择加密有效负载,您可以将整个内容寄回到您已使用的相同证书上。只需确保证书已打开数据加密位,您就可以使用证书中的私钥/公钥来加密有效负载。因此,如果恶意用户替换了证书,他们不仅需要欺骗cn和信任链,还要从应用程序获得正确的公钥来解密您使用私钥加密的数据并使用服务器进行签名公钥。

其他一些值得思考的问题:

  1. 你说会话被重用了吗?它不会过期吗?如果没有,你想让它过期。
  2. 你能利用网络安全吗?您是否可以使用VPN隧道或IP ACL限制谁甚至可以访问Web服务器?
  3. 键盘记录器怎么样?密码可以被拦截。第二个身份验证因素可以是用户拥有的内容,如密钥卡或指纹,或RSA SecurId。如果您不想走那么远,您可以向用户展示“网站印章” - 他们必须认识到与其帐户相关联的图像。甚至可能会出现几张图片,让他们选择一个他们在注册过程中选择的图像。你也可以让它们解决一个小谜题 - 一种区分人与机器(CAPTCHA型)的东西。
  4. 所有这些要点最大限度地减少了客户端存储的信息 - 只需要一个或两个证书以及一个使用该证书的密钥。

    安全性的主题很多,我们可以在这里就不同的实现细节展开讨论。以上只是需要考虑的几点。

    请记住,一切都有成本。安全性需要可用性和CPU周期。适当的平衡是关键,但这当然取决于你。 在你建造诺克斯堡之前,确保有人想住在那里:)