保護服務器上的PHP腳本以讓任何人運行PHP腳本的最佳(最簡單但有效的)方法是什麼?任何獲取我的腳本的URL地址的人都可以在我的服務器上運行該腳本,這可能會導致不需要的操作。我怎麼解決這個問題?如果我要在if($pass == 'mySuperSecretPass') { ... }
之類的腳本條件的開始處添加,那麼閱讀代碼並獲得$pass
變量的正確值是沒有問題的。在服務器上保護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