当前位置: 首页 > 面试题库 >

如何避免PHP中的UNLINK安全风险?

关冠宇
2023-03-14
问题内容

我将UNLINK与PHP和一起使用AJAX。我知道这种方式非常危险,因为每个人都可以删除任何文件。但是我需要使用,AJAX因为删除文件时无法重新加载页面。

那么,我该如何做才能只允许拥有该文件的用户删除该文件?

如果您认为我在这里做错了什么,或者您有其他想法,并且认为这将是有用的,也请让我知道其他事情:)

我的PHP代码:

<?php

    $photo_id       = $_GET['photo_id'];
    $thumbnail_id   = $_GET['thumbnail_id'];

    function deletePhotos($id){
        return unlink($id);
    }

    if(isset($photo_id)){
        deletePhotos($photo_id);
    }
    if(isset($thumbnail_id)){
        deletePhotos($thumbnail_id);
    }


 ?>

我的AJAX代码:

function deletePhoto(photo, thumbnail){

        var photos = encodeURIComponent(photo);
        var thumbnails = encodeURIComponent(thumbnail);

        if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
          xmlhttp=new XMLHttpRequest();
        } else {// code for IE6, IE5
          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }

        xmlhttp.onreadystatechange=function() {
            if (xmlhttp.readyState==4 && xmlhttp.status==200) {
                document.getElementById("media").innerHTML=xmlhttp.responseText;
            }
        }
        xmlhttp.open("GET", "http://192.168.2.104/images/users/delete_photo.php?photo_id="+photos+"&thumbnail_id="+thumbnails, true);
        xmlhttp.send();
    }

问题答案:

您需要以某种方式对用户进行身份验证。

您的用户需要使用用户名和密码进行身份验证。

PHP会话可以用来记住,您应该在服务器上使用数据库表或文本文件来存储文件所有权信息。

然后,在取消任何链接之前,您的逻辑应确保当前“经过身份验证”的用户是文件的所有者。



 类似资料:
  • 问题内容: 我们都知道全局变量只是最佳实践。但是在有些情况下,没有它们很难编写代码。您使用什么技术来避免使用全局变量? 例如,在以下情况下,您将如何不使用全局变量? JavaScript代码: 相关标记: 此代码来自具有多个的网络表单。它一次上传一个文件,以防止大量请求。它通过POST到iframe来完成此操作,等待响应触发iframeonload,然后触发下一个提交。 您不必专门回答此示例,我只

  • 问题内容: 例如我有这样的查询: 如果我尝试做这样的事情,它将显示以下警告 有办法避免吗? 问题答案: 如建议的那样,在任何地方使用都是一种不错的方法,尽管每次调用都会涉及一些手指输入。 我建议使用其他两种技术: 写一个演员助手 只需将所有内容重构到一个位置即可: 防止Eclipse为不可避免的问题生成警告 在Eclipse中,转到“窗口”>“首选项”>“ Java”>“编译器”>“错误/警告”,

  • 我正在接管一些在PHP中使用eval()函数的webgame代码。我知道这可能是一个严重的安全问题,所以在决定是否取消这部分代码之前,我希望得到一些帮助来检查代码的参数。目前我已经从游戏中删除了这部分代码,直到我确定它是安全的,但功能的损失是不理想的。我宁愿对此进行安全保护,而不是重新设计整个段以避免使用eval(),假设这样的事情是可能的。下面是防止恶意代码注入的相关代码片段。$value是一个

  • 我使用Java实现了很多Selenium测试—有时,我的测试会因为StaleElementReferenceException而失败。 你能建议一些使测试更稳定的方法吗?

  • 现在遇到一个项目,uniapp开发的微信小程序,之前的所有页面都没有使用scope将css样式私有化,导致css属性全局污染了,现在要开发后续的功能,如何在后续的开发中避免之前css的样式污染? 之前开发的内容不能使用scope将css私有化,因为一旦私有化可能会对某些页面造成影响,现在的情况就是之前的内容不能动,在此基础上开发。 目前想到的办法是在后续开发的功能中,所有的css类名名全部使用当前

  • 本文向大家介绍PHP中的unlink()函数,包括了PHP中的unlink()函数的使用技巧和注意事项,需要的朋友参考一下 该方法删除文件。成功返回TRUE,失败返回FALSE。成功返回TRUE,失败返回FALSE。 语法 参数 file_path-设置要删除的文件的名称。 context-设置流的行为。 返回 该函数在成功时返回TRUE,在失败时返回FALSE。 示例 输出结果