编程语言
首页 > 编程语言> > 禁止在简单的PHP登录系统中访问文件

禁止在简单的PHP登录系统中访问文件

作者:互联网

我写了这个非常简单的PHP登录系统:

<?php
    session_start();
    $error = '';

    if (isset($_POST['username']) && isset($_POST['password']))
    {
        if ($_POST['username'] == 'user' && $_POST['password'] == 'pass')
        {
            $_SESSION['client'] = 'ok';
            Header ("location: /kit/kit/index.php");
        }
        else
        {
            $error = 'Usuario o contrase&ntilde;a incorrectos.';
        }
    }

?>

不要担心漏洞问题,不保护任何有价值的东西.

在每个.php页面中我添加:

<?php
    session_start();

    if (!isset($_SESSION['client']) || $_SESSION['client'] != 'ok')
    {
        Header ("location: /kit/index.php");
        die();
    }

?>

这样可以保护.php会话.

问题是这不能保护文件.

我的意思是如果直接去:

什么/其它/ file.zip

它会下载它你是否已经进入.

我希望问题很清楚,如果没有,请问!

解决方法:

要阻止用户查看目录,您只需在该文件夹中创建索引页即可.例如:index.htm,index.html,default.htm,default.html.

要阻止用户输入文件夹(例如,阻止任何人查看http://www.yoursite.com/myFolder/),您可能需要访问Web主机的某些功能.某些主机允许您使用密码保护文件或文件夹.您还可以创建.htaccess文件/文件夹

htaccess文件是一个简单的ASCII文件,例如您可以通过NotePad或SimpleText等文本编辑器创建.很多人似乎对文件的命名约定有些困惑,所以让我把它弄清楚.

.htaccess是文件扩展名.它不是file.htaccess或somepage.htaccess,它简单地命名为.htaccess

创建文件

要创建文件,请打开文本编辑器并将空白页保存为.htaccess(或键入一个字符,因为某些编辑器不允许您保存空白页).您的编辑器可能会将其默认文件扩展名附加到名称中(例如:对于记事本,它将调用文件.htaccess.txt).你需要删除.txt(或其他)文件扩展名才能让自己获得htaccessing – 是的,我知道这不是一个单词,但它听起来很敏锐,不是吗?您可以通过右键单击文件并通过删除任何不说.htaccess的内容来重命名它.你也可以通过telnet或你的ftp程序重命名它,你应该熟悉其中一个,以便不需要解释.

htaccess文件必须以ASCII模式上传,而不是BINARY.这使得文件可以被服务器使用,但是防止浏览器读取文件,这会严重损害您的安全性. (例如,如果您有受密码保护的目录,如果浏览器可以读取htaccess文件,那么他们可以获取身份验证文件的位置,然后对列表进行反向工程以完全访问您以前受保护的任何部分.是防止这种情况的不同方法,一种是将所有身份验证文件放在根目录之上,以便它们不是www可访问的,另一种是通过htaccess系列命令阻止浏览器访问,更多内容后来)

JUST INCASE阻止用户下载您的文件

将所有可下载的东西存储在您的文档根目录中.这意味着在public_html文件之前.

编辑:更新了以下部分,以显示文件夹结构的图形表示

你怎么访问他们呢?

work
    downloadableFiles
        downloadables
        -    memberOnlyFile.zip
        -    welcomePackage.zip
        -    memberhshipVideoVideo.mov    
        photos
        -    photo1.jpeg
        -    photo2.jpeg
    publi    c_html
    -   index.htm
        About
        -    about.html             
        -    about.gif
        LogIn
        -    login.htm
        -    loginScreen.htm
        -    loginFancyButton.gif

现在,通过您的网站可以看到public_html文件夹中的任何内容.

您的public_html文件夹之外的任何内容都不会通过您的网站直接向全世界显示,只需在浏览器的地址栏中输入文件名即可.所以这是一件好事,因为我们要保存我们不想在public_html文件夹之外访问的所有文件.

现在说如果您希望某个用户能够下载文件,比如可能是登录用户,您仍然可以通过链接到该文件来使文件可下载.

如果我们在登录页面,要访问loginScreen网页,您只需记下这样的超链接:

<a href="loginScreen.htm">login screen</a>

因为该页面位于同一文件夹中.现在如果你想允许用户能够从public_html文件夹之外的可下载文件文件夹下载文件,因为它不在那个文件夹中,你自己就像这样引用它:

如果我们在登录文件夹中,当我们查看loginScreen.htm页面时,我们将如何访问该文件夹,您将返回一个文件夹,因此我们最终进入public_html文件夹.然后我们回到另一个文件夹,所以我们在工作文件夹中.

所以到目前为止看起来像这样.

../../这意味着两个文件夹回来了.

然后访问memberonlypath.zip然后我们需要进入downloadableFiles文件夹,然后我们需要进入可下载的文件,然后我们可以将它链接到文件membersOnlyFile.zip,这是我们之前寻找的文件.

所以现在全部链接变成了

<a href="../../downloadableFiles/downloadable/membersOnlyFile.zip">download file</a>

这样,用户只需在地址栏上输入文件即可访问该文件,但如果您自己像上面那样自行引用,则可以下载该文件.

希望这可以帮助

PK

标签:php,passwords,password-protection,session,protection
来源: https://codeday.me/bug/20190705/1383450.html