只允许我的Unity游戏通过.htaccess访问网络文件

时间:2016-04-08 13:06:27

标签: c# php .htaccess unity3d apache2

(已经回答了这个问题,但是如果有人有更好的方法而没有硬编码用户名和密码会很好)


我在Unity3D中制作移动游戏(用c#编写)。此游戏可以连接到我的服务器以检查/保存在线数据库中的分数。 (服务器是运行Apache2的ubuntu)

但问题出在这里:

每当我去http://SERVER_IP/WEB_NAME时,我都可以在浏览器中看到我的所有文件,这不是很安全..我试图用"Deny from All"制作一个.htaccess,但这也阻止了我的游戏使用该文件夹中的任何文件..

这是我的问题:

如何确保只有我的游戏可以使用这些文件,而不是来自外部http://SERVER_IP/WEB_NAME的人?

资源:



在此先感谢!

~JohnDoe

1 个答案:

答案 0 :(得分:2)

我将假设您在Unity中使用WWWForm 您可以使用HTTP basic auth之类的东西。 它不是超级安全的,但它会阻止任何人通过网络浏览器访问您的终端。

让我们用Coroutine创建一个简单的例子:

void SaveData()
{
    StartCoroutine(SubmitData());
}

IEnumerator SubmitData()
{
  // create and instance of WWWForm
  WWWForm form = new WWWForm();
  // Add Some data
  form.AddField( "playerName", "Bob" );
  form.AddField( "playerScore", 100 );

  //Get reference to headers so we can modify them.
  Hashtable headers = form.headers;
  byte[] rawData = form.data;
  string url = "SERVER_IP/WEB_NAME";

  //Add the authorisation header with username/password to access the endpoint
  headers["Authorization"] = "Basic " + System.Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes("username:password"));

  // Post the request
  WWW www = new WWW(url, rawData, headers);
  yield return www;
}

否.htaccess我们设置apache使用mod_auth_basic检查授权

这是您应该在服务器上放置的示例.htaccess文件。 您还需要一个不可公开访问的.htpasswd文件,其中包含用户名和密码。

AuthType Basic
AuthName "My Protected Area"
AuthUserFile /path/to/.htpasswd
Require valid-user

您可以使用a generator创建.htpasswd文件