Как предотвратить доступ к страницам администратора, зная URL-адрес страницы администратора?

Если кто-то знает мой URL-адрес страницы администратора, такой как www.example.com/admin.php, тогда они будут легко получать доступ к странице, напрямую присоединяясь к этому URL-адресу. Как это ограничить. Пожалуйста помоги

Вы никогда не должны публиковать секцию admin. Вы не можете полагаться на неясность для этого, авторизация – это путь. Вы можете сделать это, используя .htacces, как описано здесь , или, опираясь на PHP. Ниже приведен грубый пример.

Ниже приведена простая версия входа в систему. Если пароль правильный, он позволит пользователю перейти на admin.php. Вы должны прочитать руководство по PHP на сеансах, потому что заголовок сеанса должен присутствовать на каждой странице за страницей входа. Обработка паролей также может быть более безопасной.

<?php session_name('MyAdminSession'); session_start(); if (isset($_POST['userid']) && isset($_POST['password'])) { $userid = $_POST['userid']; $password = md5($_POST['password']); if ($userid == 'myusername' && $password == md5('mypassword')) { $_SESSION['logged_in'] = true; header('location: admin.php'); exit; } } ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>My login page</title> </head> <body> <form action="index.php" method="post"> <label for="userid">Username: </label><br /> <input name="userid" type="text" id="userid" /><br /> <label for="password">Password: </label><br /> <input name="password" type="password" id="password" /><br /> <p><input type="submit" name="submit" class="button" value="Log In" /></p> </form> </body> </html> 

Требовать аутентификацию. (и авторизация – как указано ниже!)

10x @ Просто кто-нибудь!

если вы используете веб-сервер Apache, вы можете ограничить доступ с помощью .htaccess ps. Посмотрите здесь: htaccess учебник

Я попытаюсь собрать несколько из этих ответов вместе для вас, в зависимости от того, как настроен ваш сайт.

Если это более простой веб-сайт, и вы не выполняете какую-либо обработку пользователя или проверку подлинности администратора, ваш основной параметр заключается в том, чтобы сделать, как сказал igorp, и ограничиться на основе файла .htaccess. Вы получите всплывающее окно с запросом предопределенного имени пользователя и пароля, и только тогда у вас будет доступ к этой конкретной странице.

Опять же, это хорошо для более простого веб-сайта.

Если он более сложный и вы разрешаете пользователям вход на свой сайт, вы можете настроить права доступа на разные страницы на основе уровня доступа пользователей.

Например, на вашей административной странице (-ах) вы должны проверить уровень доступа пользователя, чтобы узнать, разрешено ли ему / ей доступ к странице. Если он этого не сделает, перенаправляйтесь на страницу типа отказа от доступа. В противном случае позвольте им войти.

Используя оба этих метода, пользователь может просматривать непосредственно страницы администрирования и должен пройти какую-то проверку. В любом случае ваши страницы администратора будут защищены.

Вы можете заблокировать все IP-адреса в панели администратора, кроме IP-адресов администраторов. Напишите что-то вроде этого:

 order allow,deny deny from all allow from {your IP} allow from {your other admin's IP} 

Это должно быть

Если у вас есть доступ к cPanel (или аналогичной панели управления), вы также можете легко создавать каталоги, защищенные паролем. Этот метод использует файлы htpasswd и htaccess. Если вы настроите его таким образом, любой, кто пытается получить доступ к защищенному каталогу, должен будет ввести пользователя / пароль. Единственная его сторона заключается в том, что ваши файлы администратора должны быть в их собственной директории.

Если мне нужна быстрая проверка подлинности, я использую HTTP-аутентификацию, которая довольно проста, если вы находитесь на веб-сервере Apache:

 $USERS = array( 'foo' => 'bar' ); $user = (isset($_SERVER['PHP_AUTH_USER'])) ? $_SERVER['PHP_AUTH_USER'] : ''; $pass = (isset($_SERVER['PHP_AUTH_PW'])) ? $_SERVER['PHP_AUTH_PW'] : ''; if( !$user || !isset($USERS[$user]) || $USERS[$user] != $pass ) { header('WWW-Authenticate: Basic realm="My Realm"'); header('HTTP/1.0 401 Unauthorized'); print '<h1>Error</h1>Authentication failed!'; exit; } // if we made it this far the user logged in successfully!