在服务器上保护PHP脚本的最佳方法

时间:2015-12-02 13:30:24

标签: php security server

保护服务器上的PHP脚本以让任何人运行它的最佳(最简单但有效)方法是什么?获取我的脚本的URL地址的任何人都可以在我的服务器上运行该脚本,这可能导致不需要的(对我来说)操作。我怎么解决这个问题?如果我要在public class DisplayGraphic extends JPanel { private int xCount = 0; public void paintComponent(Graphics g) { super.paintComponent(g); //... //same as paint in above } } } 这样的脚本条件的基础上添加,那么读取代码并获得if($pass == 'mySuperSecretPass') { ... }变量的正确值是没有问题的。

请原谅我的英语。非常感谢你。

3 个答案:

答案 0 :(得分:3)

您是否考虑过使用Apache .htaccess? (请注意,您需要启用AllowOverride。)

可以阻止访问某些网址和密码保护。

AuthType Basic
AuthName "Authentication Required"
AuthUserFile "/etc/htpasswd/.htpasswd"
Require valid-user

要创建.htpasswd文件,请使用此工具:http://www.htaccesstools.com/htpasswd-generator/

另外,你可以使用blok IP,这个工具: http://www.htaccesstools.com/block-ips/

看看这是否有帮助:https://wiki.apache.org/httpd/PasswordBasicAuth

答案 1 :(得分:1)

如果服务器应该是唯一一个使用内部方法访问脚本的服务器,则可以使用.htaccess规则为其他所有人隐藏/阻止该文件。

RedirectMatch 404 "/(\/full\/path\/to\/restrictedFile\.php|\/path\/to\/restrictedFolder)"

这会将访问/full/path/to/restrictedFile.php和/ path / to / restrictedFolder的所有人重定向到您的错误404页面。
脚本根本没有打开。

时,服务器在访问本地文件时不遵守.htaccess规则,因此服务器可以运行它。

对于IIS:

This是一个描述我已经回答但是对于IIS而不是apache的页面。

一般的想法是:

<configuration>
    <location path="glimpse.axd">
        <system.webServer>
            <httpErrors errorMode="Custom">
                <remove statusCode="403" />
                <error statusCode="403" path="/Errors/NotFound" responseMode="ExecuteURL" />
            </httpErrors>
        </system.webServer>
    </location>
</configuration>

我不习惯使用IIS配置和web.config文件,因此我建议您阅读我链接的页面,您可能知道如何实现它。

答案 2 :(得分:0)

这就是我所做的,一个非常简单的自动登录功能登录。首先我有静态登录,在这种情况下usr = username。我也可以添加密码或只接受某个IP地址。我把它保存在一个名为login.php的文件中,并将其包含在必要的脚本中。

如果设置了登录名,请设置一个包含用户名的cookie,有效期为1年。无需每次都从这台电脑登录!

如果存在cookie,请将session设置为logged_in = true

session_start();
if ( isset( $_REQUEST['usr'] ) ) {
    if ( $_REQUEST['usr'] == 'username' ) {
        setcookie( 'usr', 'username', time() + 3600 * 24 * 730, '/', $_SERVER['SERVER_NAME'] );
    } else {
        setcookie( 'usr', '', time() - 3600 );
        unset( $_COOKIE['usr'] );
    }
}

if ( isset( $_COOKIE['usr'] ) && $_COOKIE['usr'] == 'username' ) {
    setcookie( 'usr', 'username', time() + 3600 * 24 * 730 );
    $_SESSION['logged_in'] = true;
} else {
    $_SESSION['logged_in'] = false;
}

现在,在我的代码中,我测试了logged_in

if ( $_SESSION['logged_in'] ) {
    // Do some stuff
} else {
    header( 'Location: http://www.google.com' );
    exit;
}

如果用户未登录,请将其重定向到其他页面!我不使用任何形式或东西。我第一次访问该页面的时候是这样的:http://www.myserver.com/?usr=username

这不是最大的安全性,而是一种不断窥探的简单方法。

如果您需要非常安全的登录,请忘记Cookie并自动登录并转到SSL加密服务器(https://)。