(已经回答了这个问题,但是如果有人有更好的方法而没有硬编码用户名和密码会很好)
我在Unity3D中制作移动游戏(用c#编写)。此游戏可以连接到我的服务器以检查/保存在线数据库中的分数。 (服务器是运行Apache2的ubuntu)
但问题出在这里:
每当我去http://SERVER_IP/WEB_NAME
时,我都可以在浏览器中看到我的所有文件,这不是很安全..我试图用"Deny from All"
制作一个.htaccess,但这也阻止了我的游戏使用该文件夹中的任何文件..
这是我的问题:
如何确保只有我的游戏可以使用这些文件,而不是来自外部http://SERVER_IP/WEB_NAME
的人?
资源:
在此先感谢!
~JohnDoe
答案 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
文件