Javascript 从HTML表单安全地将数据上载到服务器

Javascript 从HTML表单安全地将数据上载到服务器,javascript,php,security,server,Javascript,Php,Security,Server,我的网站允许用户输入和上传两件事: 他们的名字-他们在HTML表单的文本字段中键入 还有一张照片——他们也用同样的表格从电脑上传 点击“提交”我的Javascriptcode调用我服务器上的PHP脚本,该PHP脚本将数据写入JSON文件,将该文件放在正确的文件夹中,并将图像放在需要的位置-到目前为止,所有这些都非常有效 然而,我突然意识到,任何阅读我的Javascript代码的人都可以找到我的PHP脚本的URL——这意味着他们可以将该URL直接复制粘贴到浏览器中——并造成各种破坏 显然,我需要用

我的网站允许用户输入和上传两件事:

  • 他们的名字-他们在
    HTML表单的文本字段中键入
  • 还有一张照片——他们也用同样的
    表格从电脑上传
  • 点击“提交”我的
    Javascript
    code调用我服务器上的
    PHP
    脚本,该
    PHP
    脚本将数据写入
    JSON
    文件,将该文件放在正确的文件夹中,并将图像放在需要的位置-到目前为止,所有这些都非常有效

    然而,我突然意识到,任何阅读我的Javascript代码的人都可以找到我的PHP脚本的URL——这意味着他们可以将该URL直接复制粘贴到浏览器中——并造成各种破坏

    显然,我需要用不同的方式来处理这一切

    我应该不使用PHP吗?如果是这样的话,还有什么其他语言或平台可以让我做我刚才描述的事情——以一种不可能被破解的方式

    或者有没有一种方法可以混淆我的PHP脚本的URL,这样就没有人可以将其复制粘贴到浏览器地址栏中

    任何建议都将不胜感激

    ================================

    更新:

    以下是我的PHP脚本:

    <?php
    
    $tokenID = $_POST["tokenIDNum"];
    $fileName = "TokenMetadata/token". $tokenID .".json";
    $userName = $_POST["userName"];
    $imageURL = $_POST["userImageURL"];
    
    // Log out for verification:
    echo "Here's what I got so far:<br/>";
    echo "tokenID: " .$tokenID ."<br/>";
    echo "userName: " .$userName ."<br/>";
    echo "imageURL: " .$imageURL ."<br/>";
    
    
    // CREATE AND SAVE THE NEW METADATA-FILE:
    $newMetadataFile = fopen($fileName, "wb");
    if( $newMetadataFile == false ) {
        // Do debugging or logging here:
        echo "OPPS! We got an 'fopen' problem!";
    }
    else {
        $contentString = "{\r\n";
        $contentString = $contentString. '   "name" : “Fun Token # ' . $tokenID . '",';
        $contentString = $contentString. "\r\n";
        $contentString = $contentString. '   "description" : "Another token from our FUN Collection.",';
        $contentString = $contentString. "\r\n";
        $contentString = $contentString. '   "image" : "' .$imageURL;
        $contentString = $contentString. "\r\n}";
    
        fwrite($newMetadataFile, $contentString);
        fclose($newMetadataFile);
    }
        
    // or die("Unable to open file!");
    // $myfile = fopen("token.json", "w") or die("Unable to open file!");
    
    ?>
    
    
    
    当我将这个脚本的URL复制粘贴到我的浏览器中时——我担心一些坏角色可能会这样做——它会创建一个新的空
    JSON
    文件——而我不会向该URL传递任何参数。所以我很确定现在有人不仅可以用这种方式创建新的假的
    JSON
    文件,还可以用虚假数据重写现有的文件,如果它们要为我的参数传递值的话

    我需要知道的是,是否有可能阻止坏演员这样做——或者我是否必须以完全不同的方式来做

    我的理解是,如果我添加
    SESSION
    ,或者
    CAPTCH
    ,我可能就可以了?(显然,我不是PHP专家。)


    在我花几个小时进入那个兔子洞之前,我希望能有任何关于这方面的想法/建议。

    任何有足够经验阅读JavaScript代码的人都可以使用浏览器工具来确定服务器上的URL。通常的处理方法是要求用户在上传之前注册,在接受上传之前,让您的PHP脚本检查上传程序是否已注册。@TangentiallyVertical,那么您的意思是,如果我要求用户注册(我假设这意味着我将为每个用户提供一个唯一的密码),那么如果其他人试图复制并将我的PHP脚本的URL直接粘贴到他们的浏览器中然后从那里运行它,然后我可以让我的PHP不运行,因为运行尝试将缺少这样有效的密码-这将解决所有问题?这取决于你所说的“一切”是什么意思…据我们所知,你可能还有其他安全问题。但是,如果您在PHP中输入适当的代码,以确保请求在处理上载之前具有有效的登录会话,那么它将停止对脚本yes的任何旧的随机访问。或者,如果您只是想阻止自动机器人或客户端脚本发送大量随机数据,那么可以在表单和PHP中实现验证码,以便只有人类才能使用它。取决于您的具体要求以及您试图应对的具体威胁。
    这意味着他们可以将该URL直接复制粘贴到浏览器中。
    …这将生成GET请求,但我希望您的JS会对其进行发布。那么,你到底期望GET带来什么样的“浩劫”?当然,除了浏览器之外,还有其他工具可以进行HTTP请求,它可以自动发送帖子(或任何其他类型的请求),因此您的担心是合理的,但您认为它的来源方向有点错位,我会想。
    我是否应该不使用PHP来实现这一点
    …这种威胁的性质与您使用哪种服务器端语言编程无关。