【问题标题】:Secure JSON file to be readed without permision未经许可即可读取的安全 JSON 文件
【发布时间】:2016-09-21 16:52:42
【问题描述】:

我有将一些 JSON 数据写入 mySecretData.json 文件的 PHP 脚本。此脚本通过 CRON 每 10 分钟定期运行一次。我正在通过 AJAX 从我的网站和 Windows 10 应用程序访问此 JSON 文件。将来我可能打算出售我的秘密文件的内容。我怎样才能保护这个文件在未经我许可的情况下被阅读?

此时,任何人都可以浏览我网站的源代码以获取该网站从中读取机密数据的 URL。试图出售这些内容是毫无用处的。我的 JSON 文件只包含几行数据,所以我不想使用数据库。

如何保护我的文件?非常感谢!

【问题讨论】:

  • 将文件放在 webroot 之外。如果满足某些条件,用 php 读取它

标签: javascript php ajax security server


【解决方案1】:

详细说明我的评论

file structure
/
/secret
    /secret.json
/public_html //<--webroot
    /getJson.php


//getJson.php
//complicated auth logic goes here
if(isset($_GET['authtoken'] && $_GET['authtoken']=='im_ok_guv_honest'){
    header('Content-Type: application/json');
    readfile('../secret/secret.json');
    die();
}
die('not authorized');

【讨论】:

  • 但是这样任何人都可以查看这个 PHP 脚本并读取我的凭据,或者简单地调用这个 PHP 脚本来检索我的秘密数据。还是我错过了什么?
  • 没有人可以查看php源,那是在服务器上。他们必须使用正确的凭据调用脚本(在本例中为 getJson.php?authtoken=im_ok_guv_honest)。显然,您的实际身份验证逻辑会更复杂,但这超出了问题的范围。
  • 但是如果有人会使用 AJAX 请求读取我网站的 JS 脚本文件,该请求将下注到 /getJson.php,那么他知道 getJson.php 文件在哪里,他可以下载它并像任何东西一样阅读它其他在互联网上。请原谅我的迟钝 - 我是服务器端的 PHP 新手。
【解决方案2】:

您应该将其从您的网络文件夹中移开,并在检查数据库的某些凭据后让脚本流式传输它。

您可以添加一些 IP 验证以防止多个人使用相同的凭据

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多