【问题标题】:General Password Security && Implementation in Actionscript 3Actionscript 3 中的一般密码安全和实现
【发布时间】:2009-07-25 03:59:34
【问题描述】:

我今年夏天的项目是制作一款多人在线 Flash 游戏。我可以使用一些建议,因为我以前从未实现过安全登录系统,更不用说在 Actionscript 中这样做了。

我现在的设置是一个 .swf 向/从 Java 服务器发送/接收游戏数据,该服务器与 MySQL 数据库就帐户信息进行通信。

1) 我一般应该如何进行?我在想也许我应该让我的 .swf 加密密码,发送它,(让我的服务器再次加密它?),然后将它存储在数据库中。

2) 我确信我可以找到大量的 Java 加密指南。谁能推荐一个 Actionscript 库,甚至只是一个通用的加密算法(这样我就可以自己搜索一个等效的 AS)来完成这项任务?

另外,我的游戏通过 XMLSocket 进行通信。我认为这不会导致任何安全问题,但如果我弄错了,请告诉我。

【问题讨论】:

    标签: flash actionscript-3 security passwords


    【解决方案1】:

    发送密码的一般例外方式是根本不发送密码,因为这被认为是高度不安全的。相反,正如您所提到的,您发送了不同形式的密码,例如散列密码,尽管这仍然有一些缺点 - 即彩虹表等。

    因此,最好的方法是使用随机数(仅使用一次的数字)对密码进行哈希处理,即随机字符串和时间戳,然后将其发送。然后,我会将散列字符串、随机数和时间戳以 xml 格式发送到您的数据库服务器,然后该服务器可以尝试使用您为用户存储的密码重现散列密码。

    这就是 W3C usernameToken 规范的做法。见-http://docs.oasis-open.org/wss/v1.1/wss-v1.1-spec-os-UsernameTokenProfile.pdf

    <UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecurity-utility-1.0.xsd">
      <Username>jon</wsse:Username>
       <Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">9JSGeXj+zpvEp42I20K/1bg8rCE=</Password>
       <Nonce>TaF3g5F37wSHtSdY</Nonce>
       <Created>2009-07-25T10:29:34Z</:Created>
    </UsernameToken>
    

    但是,这可能会引入不必要的复杂性。

    因此,您可以简单地对密码进行哈希处理并将其发送到服务器,然后服务器将对其密码版本进行哈希处理,如果它与您的密码匹配。尽管在一天结束时,您必须问自己实际的 .swf 文件有多安全,因为您可以反编译它们并跳过原始登录。但是,对于这大部分来说,这已经足够了。

    为了散列字符串,我通常使用 as3crypto (code.google.com/p/as3crypto/) - 但我知道 abode utils 包有 md5 和 sha-1 实现。

    至于 xml 套接字,只要您在操作脚本应用程序中有一个允许它与该域对话的跨站点策略文件,并且在允许 flash 与它对话的域上有一个文件,就可以了。否则您可能会遇到安全错误。

    希望这会有所帮助。

    乔恩

    【讨论】:

    • 要实现这两种方法,我的密码不需要以明文形式存储吗?
    • 一点也不,您可以将密码存储在经过哈希处理的数据库中,然后简单地在游戏中对密码进行哈希处理,然后再使用上述方法(即随机数 + 时间戳)重新哈希密码 - 执行相同的服务器端会产生结果相同。
    • 注意:上面的 xml 示例是经过哈希处理的,但是采用 base64 格式,因此它没有被加密,只是想我会说清楚
    • 啊,好的。感谢您的帮助!
    【解决方案2】:

    Here 是关于在 md5 中使用 ActionScript 进行加密的链接(我刚刚在 Google 上搜索过),因为它是最常用的加密算法。您不应在服务器中对其进行加密,而应使用与数据库的安全连接,并将消息中加密的内容与数据库中的加密密码进行比较。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-28
      • 2012-07-03
      • 2013-08-18
      • 2017-05-26
      • 1970-01-01
      • 2014-10-30
      • 2011-02-04
      相关资源
      最近更新 更多