繁体   English   中英

从Android应用安全地写入远程数据库

[英]Safely writing to remote database from Android app

我认为我必须执行某种API,Android应用程序会将参数发送到php文件或类似文件。

我在考虑一款具有某种高分列表的应用程序。 我将如何确保通过应用程序实现提交的高分值? 说该人达到9001分。 现在,如果这仅导致某种形式的file.php?score = 9001调用,我对人们找到php位置并提交所需内容的感觉就不太安全。

关于这种问题有什么意见吗? 谢谢。

由于您无法验证请求的来源,因此无法确保此100%安全,但是有一种方法可以使获取高分的难度有所提高。 从本质上讲,它仍然是安全性,但是它需要深入研究实际的应用程序二进制文件,而不仅仅是查看网络连接。

首先,为您的应用选择一个“密码”。 除了发送分数以外,还发送与分数关联的密码的密码哈希(例如SHA-256或其他形式)。 在服务器端,重新计算与分数连接的密码的哈希,然后检查它是否与提交的哈希匹配。 如果不是,则拒绝分数提交。 现在,这比初始方法更安全,因为查看应用程序发出的请求并不能使您伪造分数。 但是,查看应用程序中的二进制代码仍将允许攻击者恢复密码并伪造分数提交,但这非常复杂,可能足以满足您的目的。

当然,这并不排除能够复制分数(一旦已知正确的哈希,您可以根据需要多次提交分数)。 如果您甚至想避免这种情况,则必须按以下步骤提交分数:从服务器请求(随机)ID号,哈希分数+ ID +密码,提交分数+哈希,然后服务器检查此哈希是否良好。 服务器需要记住ID号,因此编程时要多一些。 一个更简单的解决方案是将每个分数与玩家名称相关联,并且每个玩家只允许一个分数。 然后,您可以哈希密码+名称+分数。

下午好!

最好通过POST与服务器通信。 因此,您可以将其他参数(例如,密钥)从您的应用发送到服务器,并在其中进行检查。

PHP示例:

<?
$key = trim(htmlspecialchars($_POST['KEY']));

if ($key == 'your_secret_string') {
   //write data to DB
}
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM