是TextMesh Pro InputField密码安全?



我正在用Unity制作一款手机在线游戏。就像其他在线游戏一样,有一个登录屏幕,用于输入TextMesh Pro的TMP_InputField的ID/密码。密码输入字段用星号覆盖,但是输入字段的值仍然包含密码字符串,如果黑客或恶意软件获取了这些数据怎么办?输入字段是否足够安全?还是我需要通过其他方式加强安全?

感谢

你可以模拟WPF应用程序,其中PasswordBox被放置在GUI中,SecureString作为数据结构。SecureString并不完美但是,只是缩短了时间解密字符串可以在内存中(而不是一个常规string受到不可预测的GC事件)。

显然你不能使用WPF控件,但你可以很容易地使用任何你喜欢的Unity UI框架创建自己的控件。

请注意,在。net 5+中(尽管从Unity的角度来看技术上不适用)SecureString有一个不推荐的警告,其细节在这里介绍。然而,关于在任何应用中处理凭证是否是个好主意的争论仍然适用于Unity。

选择

一般来说,最好的安全性是当应用程序不处理用户名和密码1

  1. Windows认证(虽然有点毫无意义的游戏)
  2. 证书(在游戏中闻所未闻)
  3. 依赖于已建立的SSO提供程序。例如xusMicrosoft Game Development Kit for Unity

在Unity中登录GDK(示例由GDK提供):

// Look ma, no need for passwords!
XUserAddOptions options = XUserAddOptions.AddDefaultUserAllowingUI;
SDK.XUserAddAsync(options, AddUserComplete);
private void AddUserComplete(int hresult, XUserHandle userHandle)
{
if (!Succeeded(hresult, "Sign in."))
{
return;
}
_userHandle = userHandle;
CompletePostSignInInitialization();
}

1DE0001: SecureString不应该使用

参见

  • "整合微软游戏开发工具包与您的PC Unity游戏">, GDK,微软(完成与一个很好的Unity教程)
  • "实现玩家登录">, GDK,微软

最新更新