Php - запретить доступ к веб-странице из поддельной точки доступа?
Здравствуйте и добро пожаловать, недавно я заметил большую дыру в безопасности, которая, как я могу сказать, является проблемой для всех существующих веб-приложений, которые аутентифицируют своих пользователей, прося их ввести свое имя пользователя и пароль.
Я имею в виду, что злоумышленнику требуется всего несколько минут, чтобы подделать точку доступа (веб-страницу, например: логин) на ваш веб-сайт и заставить ваших пользователей перейти на эту фальшивую точку доступа, я приведу пример, чтобы это было более понятно:
Скажем, у меня есть свой веб-сайт по адресу: www.realwebsite.com. Существующие пользователи должны пройти через страницу входа, чтобы подключиться к веб-сайту, и моя страница входа выглядит следующим образом:
// login.php <?php if (isset($_POST['go'])) { $username = $_POST['username']; $password = $_POST['password']; } // my server logic goes here. ?>
И мой Html, (в www.realwebsite.com/login.php):
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Login</title> </head> <body> <form method="post" action="login.php"> <input type="text" name="username"/> <input type="password" name="password"/> <botton name="go">Go</button> </form> </body> </html>
И допустим, злоумышленник хочет украсть учетные данные пользователей, он создаст форму, идентичную моей От на моей странице входа в систему, и просто изменит свойство "действие" на теге "форма", это выглядит следующим образом:
Фальшивая страница точки доступа:
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Login</title> </head> <body> <form method="post" action="malicious_faked_accesspoint.php"> <input type="text" name="username"/> <input type="password" name="password"/> <botton name="go">Go</button> </form> </body> </html>
Аттакер может заставить существующего пользователя перейти на вредоносную страницу входа, отправив ссылку по электронной почте или просто создав блог и поместив ссылку на эту вредоносную страницу внутри блога, как только пользователь перейдет на вредоносную страницу (пользователь думает, что это настоящая веб - страница, так как она имеет тот же внешний вид), введите имя пользователя и пароль и нажмите кнопку "Перейти" - введенные имя пользователя и пароль перейдут на сервер вредоносной точки доступа, который может получить их в системе. malicious_faked_accesspoint.php страница с использованием $_ПОСТ массив.
Конец: злоумышленник успешно получил имя пользователя и пароль моих пользователей.
И если это все еще трудно выполнить, есть программы, которые могут подделать точку доступа к любому веб-приложению менее чем за миллисекунду.
Этот вид атаки очень легко выполнить, и я задаюсь вопросом, что огромные организации, такие как Google, Facebook, делают против него.
Я много искал в интернете и нашел много статей, описывающих эту проблему, но они не говорят о возможном решении.
Фальшивая страница входа находится в другом домене, поэтому разница между фальшивой веб-страницей и реальной веб-страницей заключается в url-адресе, но не все пользователи понимают, что происходит на url-адресе и почему.
Я думаю, что преодолеть этот тип атак практически невозможно, потому что мой настоящий веб-сервер определенно не имеет никакого контроля над фальшивой точкой доступа, и все, что я буду делать на реальной веб - странице-фальшивая веб-страница будет иметь тот же внешний вид, что и настоящая веб-страница.
Поэтому я задаю этот вопрос здесь, чтобы другие зрители могли прочитать и подумать об этом, и если кто - то не знал об этом-хорошо знать это сейчас, особенно если вы веб-разработчик.
Что я уже пробовал:
Может быть, я могу сказать пользователям, чтобы они проверяли url-адрес каждый раз, когда они переходят на каждую страницу моего веб-сайта. но сталь, как они запомнят мои предложения и увидят разницу между настоящей страницей и фальшивой? (пользователи, которые не понимают URL-адресов). Может быть, еще какие-нибудь практические предложения?
Peter_in_2780
Два термина для поиска:
фишинг
двухфакторная аутентификация