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来实现这一点
…这种威胁的性质与您使用哪种服务器端语言编程无关。