logo


home map contact


Если вы видите это сообщение - значит вы используете браузер Internet Explorer. Негативное отношение к этому браузеру сложилось не только у владельца данного ресурса, но и у подавляющего большинства людей, разбирающихся в web технологиях. Попробуйте установить один из браузеров по ссылке ниже, возможно вам он тоже понравится больше!

Opera, the fastest and most secure web browser     Spread Firefox Affiliate Button

проверка подлинности данных формы

Существует способ причинения вреда сайту, при котором определенная форма сохраняется на жесткий диск злоумышленника, изменяется параметр action и обращение к серверу происходит непосредственно с удаленного компьютера. Это делается с целью обхода проверки передаваемых данных средствами JavaScript, автоматизации подбора пароля, флуда и т.д. Защититься от этого можно с помощью переменной окружения HTTP_REFERER. В ней содержится адрес страницы, с которой был осуществлен переход. Например, если имя вашего домена www.some.com, то оно обязательно будет присутствовать в HTTP_REFERER при переходах внутри сайта. То есть в сценарии можно сделать следующую защиту:
if(!eregi("some\.com", $_SERVER['HTTP_REFERER'])) die("Несанкционированное обращение!");
проблемы:

  • переменной HTTP_REFERER нельзя полностью довериться, поскольку она может быть изменена на стороне клиента, но все же рассмотренный способ является хорошей защитой "от дурака"




Комментарии:



ыы    27.09.08 04:28

А если адрес будет таким: http://example.com/some.com/Моя_злая_форма.html some.com присутствует Это перебор с упрощением?




Alek Veritov    27.09.08 21:05

как и написано в статье данный способ не является очень серьезной защитой от CSS, но как средство "от дурака" вполне сгодится. что мешает вам проверять, например, ip адрес, а не имя домена?




Londeren    08.11.08 17:16

Alek Veritov ты ваще не шаришь, чувак... CSS ??? наверно имелось ввиду XSS далее - eregi не канает, юзай preg причем тут ip и имя домена?? клиент не отдает серверу ip реферера ну и т.д. в общем лучше не пиши про то, чего не знаешь




Alek Veritov    10.11.08 10:04

Londeren, рад, что ты "шаришь". XSS - это стилизованная аббревиатура Cross Site Scripting, так что можно (и даже правильнее) CSS! А стилизовали до XSS ее для того, чтобы "шарилы" понимали о чем речь и не путали с Cascading Style Sheets. Не веришь, спроси у гугла. А почему "eregi не канает"? А где, интересно, на данной странице я утверждаю, что "клиент отдает серверу ip реферера"? Я сказал, что можно проверять ip, но не говорил, что с помощью HTTP_REFERER...




anonymous    28.11.08 11:01

почему некоторые идиоты... все время хотят испортить хорошие сайты своими идиотскими коментариями... ну не нравиться и флаг тебе в руки... катись да... колобок...




Alex    31.01.09 21:13

лучше всего, проверять ip юзера при попытке выполнения входа и вставлять его в таблицу (ip, time),и если он часто пытается войти, выкидывать его в "сторону"




MaZaFaKa    21.05.09 04:07

if(substr($_SERVER['HTTP_REFERER'], 0 , 18) != "http://www.site.ru" && substr($_SERVER['HTTP_REFERER'], 0 , 14) != "http://site.ru") die("Умри!"); тут можно подделать?




Владимир    23.07.10 14:06

Лучше всего использовать сессии.
<?php
// Запускаем сессию
session_start();
// Регистрируем в сессии некоторое значение например имя пользователя
// для большей безопасности пременяем функцю md5()
$name = "Вася";
$name = md5($name);
$_SESSION['name'] = $name;
?> <html>

<head>
<title></title>
</head>

<body>


<form name="" action="action.php" method="post">
<!-- Тело формы -->
<input name="check" type="hidden" value="<?php echo $_SESSION['name']; ?>">
</form>

</body>
</html>


action.php

<?php
// Запускаем сессию
session_start();
// Получаем данные из скрытого поля
$check = $_POST['check'];

// Сравниваем данные полученные из формы с данными в нашей сессии

if ( $check === $_SESSION['name'] {

// Все хорошо

}
else {

die ("HACKING ATTEMPT !!! ");

}

?>




vasily    17.09.10 17:41

spasibo!




Сергей    21.06.11 05:43

Проще доверять проверку заполнения формы не джаваскрипту на стороне клиента, а пхп на сервере




deMerk    03.08.11 22:54

Проверку лучше дублировать на PHP. По поводу загрузки с левых страниц, можно сделать так:
Главная или другая страница, с которой идет обращение к обработчику:
$_SESSION['fromSite'] = 1;
Обработчик:
if(!$_SESSION['fromSite']) die('Это не хорошо.');
Это защита от более умного дурака.




hex    13.12.11 17:24

что за тупизм данные сессии палить в скрытом поле формы?:
<input name="check" type="hidden" value="<?php echo $_SESSION['name']; ?>">- вы думаете боты(не юзеры, которые исходный код могут не смотреть) не считают значение поля hidden?
пусть вводит значение, а оно сверяется со значением $_SESSION['name']-(не надо его палить, оно из сессии никуда не денется, пока не обновится)




hex    13.12.11 17:55

и еще, к администрации сайта, раз уж вы зарабатываете на рекламе от гугла, то неприлично не делать ссылку на закачку googlechrome
PS для пользователей internet explorera
PPS я сам зашел через хром, но смотрел исходный код, чтоб понятней было и увидел несправедливость




Александр    07.04.12 16:08

Уважаемы забудьте раз и навсегда, о том что если в форме есть скрытое поле/поля то "дурак" не сможет чего-то там отправить...

Сейчас актуально js+php, и притом что алгоритм на php должен проверять результат работы js. Уверен что проверка порядка POST данных позволит защититься, от не совершенных парсеров форм.






Если вам помогла или просто понравилась эта статья вы можете отблагодарить автора кликнув по рекламе. Спасибо!





комментировать:
прежде чем писать комментарий убедитесь, пожалуйста, что он не попадает в нижеследующие категории:
  • не стоит писать "я чайник, помогите ..." или "я начинающий, объясните ..." - уважайте себя! может вы и новичок, но ведь не тупой же! сами вполне способны во всем разобраться, тем более, что материал здесь изложен весьма доступно

  • не пишите вопросы типа "как мне сделать такую же менюху как наверху?", "куда вставлять этот код?", "как устроен интернет?" и т.д. - уважайте время автора!

  • комментарии вида "все, что здесь написано - бред" будут оставлены только если будут подписаны "я такой-то, разработчик сайта такого-то с посещаемостью 1000 хостов в день" и т.п. Если вы не согласны с чем-то - обоснуйте, напишите как правильно, а писать простые ругательства не надо, это не забор

прямые оскорбления кого бы то ни было будут удалятся!
здоровая критика приветствуется!



от кого:  

security picture