我今年夏天的项目是做一个多人在线flash游戏。 我可以使用一些意见,我以前从来没有实现安全登录系统,更不用说在Actionscript中这样做。
我的设置,现在是一个.swf发送/从MySQL数据库有关帐户信息通信的Java服务器接收游戏数据/。
1)我应该如何在一般继续吗? 我在想,也许我应该有我的.swf文件加密密码,发送,(再有我的服务器加密了吗?),然后将其存储在数据库中。
2)我敢肯定,我可以找到大量的指南,以加密在Java中。 谁能推荐一个ActionScript库,甚至只是一个普通的加密算法(这样我就可以搜索一个等效自己),这将是该任务可以接受吗?
另外,我的游戏通过一个XMLSocket通信。 我不认为这应该引起任何安全问题,但请让我知道,如果我错了。
发送密码的一般例外方法是不实际发送他们所有的,因为这被认为是极不安全的。 相反,正如你提到你发送一个不同形式的人,如散列密码,althought这仍然有一些画背 - 即彩虹表等。
因此,最好的办法是用哈希一个随机数(数只能使用一次)的密码,即一个随机字符串和时间戳并发送代替。 然后我会散列字符串时,随机数和时间戳以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/) - 但我知道居留权utils包有MD5和SHA-1实现。
而对于XML套接字,这将是罚款,只要你在动作脚本应用程序,允许它进行会谈到该域,一个在允许闪光谈谈它的域中的跨站点策略文件。 否则,你可能会得到安全性错误。
希望这可以帮助。
乔恩
这是一个关于使用ActionScript MD5(我GOOGLE了它)加密链接,因为是最常用的加密algorythm。 你不应该在服务器加密,但使用的数据库的安全连接,并且比较什么是在消息中加密数据库的加密密码。