在服务器上保护PHP脚本的最佳方式
保护服务器上的PHP脚本以让任何人运行PHP脚本的最佳(最简单但有效的)方法是什么?任何获取我的脚本的URL地址的人都可以在我的服务器上运行该脚本,这可能会导致不需要的操作。我怎么解决这个问题?如果我要在if($pass == 'mySuperSecretPass') { ... }
之类的脚本条件的开始处添加,那么阅读代码并获得$pass
变量的正确值是没有问题的。在服务器上保护PHP脚本的最佳方式
请原谅我的英语。非常感谢你。
如果服务器应该是唯一使用内部访问脚本的人您可以使用.htaccess规则隐藏/阻止其他人使用的方法。
RedirectMatch 404 "/(\/full\/path\/to\/restrictedFile\.php|\/path\/to\/restrictedFolder)"
该重定向大家参观/full/path/to/restrictedFile.php和/路径/到/ restrictedFolder到您的错误的404页。
脚本根本不会打开。
服务器在访问本地文件时不尊重.htaccess规则,因此服务器可以运行它。
对于IIS:
This是描述我已经回答了,但IIS和Apache的不是一个网页。
的总体思路是这样的:
我不习惯与IIS配置和web.config中工作<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>
文件,所以我建议你阅读我链接到页面中,你可能会知道如何执行它。
我真的很喜欢 - 谢谢。 Windows服务器上是否提供.htaccess? –
适用于我... '
@JanChalupa如果这些服务器使用Apache,是的。如果使用IIS,则必须使用“web.config”文件。 – x13
您是否考虑过使用Apache .htaccess? (请注意,您需要启用AllowOverride。)
可以阻止访问某些URL和密码保护。
AuthType Basic AuthName "Authentication Required" AuthUserFile "/etc/htpasswd/.htpasswd" Require valid-user
要创建htpasswd文件,使用这个工具:http://www.htaccesstools.com/htpasswd-generator/
此外,您还可以勃洛克IP的,而这个工具: http://www.htaccesstools.com/block-ips/
这就是我所做的,具有自动登录功能的非常简单的登录。首先我有一个静态登录,在这种情况下,usr = username。我也可以添加密码或只接受某个IP地址。我将它保存在一个名为login.php的文件中,并将其包含在必要的脚本中。
如果登录已设置,请使用用户名设置cookie,有效期为1年。无需每次都从这台计算机登录!
如果cookie存在,设置会议LOGGED_IN =真
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
这不是最大的安全性,但一个简单的方法来保持窥探出来。
如果你需要一个非常安全登录,忘了饼干和自动登录,并移动到SSL加密的服务器(https://开头)。
如果你想使用某种类型的认证和/或授权机制,还有许多* *例子可在网上。即使你给出的过分简化的例子(硬编码密码)也可以在足够简单的情况下完成工作。你有*使用这样的密码尝试*吗?这种尝试以什么方式*不成功? – David
@LuckyChingi这几乎不是一种保护。 – arkascha