![]() |
|
| Правила Форума редакция от 22.06.2020 |
|
|||||||
|
|
Окажите посильную поддержку, мы очень надеемся на вас. Реквизиты для переводов ниже. |
|
![]() |
|
|
Опции темы | Опции просмотра |
Language
|
|
|
#16
|
|
Пользователь
Пол:
Регистрация: 07.03.2008
Адрес: Киев
Сообщений: 111
Репутация: 35
|
ну есть капча http://www.captcha.ru/kcaptcha/, вроде неплохая
|
|
|
|
| Сказали спасибо: |
| Реклама: | наполнитель для виброгалтовки купить | каркасные дома под ключ барнхаус | яндекс метрика для яндекс формы | 6500w | Магазин бытовой техники: мультиварка панасоник 18 купить - переходи на сайт ТАЙМТВ! |
|
|
#17
|
|||||||||||||||||||||||
|
Новичок
Пол:
Регистрация: 05.01.2008
Сообщений: 3
Репутация: 0
|
Не правильно. Всегда надо проверять что за данные и как они к нам попали ( в смысле с $_POST или с $_GET запросом). в твоем примере можно зарегистрироваться даже через УРЛ И ты об этом не будешь знать. Иногда очень полезна проверять источник запроса и метод запроса. Дополнительная защита ни кому не вредить. |
|||||||||||||||||||||||
|
|
|
|
|
#18
|
|
|
|
|
|
|
|
|
#19
|
|
Новичок
Пол:
Регистрация: 09.10.2007
Сообщений: 18
Репутация: 12
|
Если скрипт обрабатывает данные из формы, введенные пользователем, всегда читай их из массива $_POST, если данные отправлены методом POST. Если данные отправлены методом GET, всегда читай их из массива $_GET.
Никогда в этих случаях не используй массив $_REQUEST. Причина. Допустим, у тебя форма с методом отправки данных POST. Если в URL скрипта-обработчика добавить &var_name=var_value и данные читаются из массива $_REQUEST, переменная $var_name будет прочитана со значением var_value, несмотря на то, что на самом деле в форме ничего не вводилось и в массиве $_POST этой переменной нет. Потенциальная уязвимость. |
|
|
|
| Эти 2 пользователя(ей) сказали cпасибо за это полезное сообщение: |
|
|
#20
|
|
Пользователь
Пол:
Регистрация: 07.03.2008
Адрес: Киев
Сообщений: 111
Репутация: 35
|
Ну если подделать http запрос и изменить $_POST данные это не проблема. Использовать $_REQUEST или $_POST не никакой разницы. Правда есть одна - уникальность названия переменных $_POST и $_GET данных. И еще все входящие данные нужно проверять и фильтровать. |
|
|
|
| Сказали спасибо: |
|
|
#21
|
|
|
|
|
|
|
|
|
#22
|
|||||||||||||||||||||||
|
Пользователь
Пол:
Регистрация: 07.03.2008
Адрес: Киев
Сообщений: 111
Репутация: 35
|
Ну смотри, все данные которые переданы через $_GET, $_POST (также сессии и кукисы если используешь), перед тем как что-то сними делать в коде, надо их проверить на зловредный код или sql инъекцию. Ссылки по теме защиты сайта http://lib.labpc.ru/article.php?id=012 http://www.softoplanet.ru/topic6436.html |
|||||||||||||||||||||||
|
|
|
|
|
#23
|
|||||||||||||||||||||||
|
Неактивный пользователь
Регистрация: 01.12.2008
Сообщений: 11
Репутация: 2
|
у тебя проблемы сjavascript, проверю функции, надо быть внимательнее если делаешь сабмит формы через javascript, я так тоже как то попал, но потом нашел, как говорится дело было не в бабине ![]() |
|||||||||||||||||||||||
|
|
|
|
|
#24
|
|
|
|
|
|
|
|
|
#25
|
|||||||||||||||||||||||
|
Новичок
Пол:
Регистрация: 12.07.2009
Сообщений: 2
Репутация: 0
|
Вопрос не в "лучше-хуже", а в "надежно-ненадежно". Проверку на стороне JS всегда можно обойти, поэтому она делается только как фича, чтобы облегчить жизнь пользователю, например сообщить что он ввел некорректный адрес эл. почты до того как он отправить форму на сервер. Проверка на сервере (PHP) производится независимо от того была ли проверка данных на стороне клиента (JS) и именно она позволяет обезопасить данные. |
|||||||||||||||||||||||
|
|
|
|
|
#26
|
|
и всё-таки, если "надёжнее", значит — "лучше"
![]() |
|
|
|
|
|
|
#27
|
|||||||||||||||||||||||
|
Неактивный пользователь
Пол:
Регистрация: 19.07.2009
Сообщений: 21
Репутация: 2
|
к "надежности" еще неплохо бы добавить удобство, что и делает JavaScript П.С. Насчет капчи, сам когда-то немного провозился с этими разными скриптами, как на меня, намного проще делать так (капча не слишком сложная, но для большинства целей подходит): в форме капча вызывается просто как <img src="captcha.php">, поле для ее вода как <input type="text" name="captcha" maxlenght=7> файл captcha.php: <?php session_start(); $kod=rand(1000000,9999999); $_SESSION['code']=$kod; for($i=0;$i < 7;$i++) $arr[$i]=substr($kod,$i,1); $im=imagecreate(130,40); imagecolorallocate($im,255,255,255); $a=0; for($i=0;$i < 7;$i++) { $color=imagecolorallocate($im,rand(0,255),rand(0,2 55),rand(0,255)); imagestring($im,rand(2,9),$a+=15,rand(0,20),$arr[$i],$color); } header("Content-type: image/jpeg"); imagejpeg($im,'',100); ?> файл, куда передается форма (методом post, если же метод get, то заменить далее все $_POST на $_GET), начинается с проверки капчи: <?php session_start(); if($_SESSION['code']!="" && $_POST['captcha']==$_SESSION['code']) { ... думаю, в таком скрипте намного проще разобраться, нежели в скриптах, предлагаемых разными сервисами... |
|||||||||||||||||||||||
|
|
|
| Сказали спасибо: |
|
|
#28
|
|
nemecfc,
Спасибо за труды, однако: 1) чего-то изображение не создаётся 2) куды втулить сие, я чего-то не понял, так как у меня всё происходит в одном файле: PHP код:
|
|
|
|
|
|
|
#29
|
|||||||||||||||||||||||
|
Неактивный пользователь
Пол:
Регистрация: 19.07.2009
Сообщений: 21
Репутация: 2
|
1) Должно создаваться, если ты все правильно сделал (пример, что все работает - http://fightclub.net.ua/guestbook.php) 2) Это вставляется в файл, куда передаются данные из формы (<form action="файл, куда передаются данные из формы">), если это та же страница, то, значит, в файл той же страницы. |
|||||||||||||||||||||||
|
|
|
|
|
#30
|
|
Неактивный пользователь
Регистрация: 30.07.2009
Сообщений: 9
Репутация: 2
|
вот пример с аттачем
смотреть"]Шаг 1. <form action="./upload.php" method="post" enctype="multipart/form-data"> <p><input type="file" name="userfile" id="file"></p> <p><input type="submit" value="Загрузить фаил"></p> </form> Шаг 2. <?php $allowed_filetypes = array('.jpg','.gif','.bmp','.png'); // Здесь мы перечисляем допустимые типы файлов $max_filesize = 524288; // Максимальный размер загружаемого файла в байтах (в данном случае он равен 0.5 Мб). $upload_path = './files/'; // Место, куда будут загружаться файлы (в данном случае это папка 'files'). $filename = $_FILES['userfile']['name']; // В переменную $filename заносим точное имя файла (включая расширение). $ext = substr($filename, strpos($filename,'.'), strlen($filename)-1); // В переменную $ext заносим расширение загруженного файла. // Сверяем полученное расширение со списком допутимых расширений, которые мы определили в самом начале. Если расширение загруженного файла не входит в список разрешенных, то прерываем выполнение программы и выдаем соответствующее сообщение. if(!in_array($ext,$allowed_filetypes)) die('Данный тип файла не поддерживается.'); // Теперь проверим размер загруженного файла и если он больше максимально допустимого, то прерываем выполнение программы и выдаем сообщение. if(filesize($_FILES['userfile']['tmp_name']) > $max_filesize) die('Фаил слишком большой.'); // Проверяем, доступна ли на запись папка, определенная нами под загрузку файлов (папка files). Если вдруг недоступна, то выдаем сообщение, что на папку нужно поставить права доступа 777. if(!is_writable($upload_path)) die('Невозможно загрузить фаил в папку. Установите права доступа - 777.'); // Загружаем фаил в указанную папку. if(move_uploaded_file($_FILES['userfile']['tmp_name'],$upload_path . $filename)) { echo 'Ваш фаил успешно загружен <a href="' . $upload_path . $filename . '">смотреть</a>'; } else { echo 'При загрузке возникли ошибки. Попробуйте ещё раз.'; } ?> |
|
|
|
![]() |
Похожие темы
|
||||
| Тема | Автор | Раздел | Ответов | Последнее сообщение |
| VBNet+ Access.Как получить данные из таблиц в DataSet? | Yuru | Веб - Программирование | 2 | 14.02.2011 11:43 |
| Как получить данные из БД в Delphi 7 | Чех | Delphi | 8 | 12.07.2010 21:34 |
| Как получить данные из адресной строи? | Vinni_incorp | PHP | 5 | 28.01.2008 11:36 |
| Как в ASP Linux11 получить данные с DV камеры:? и перекодировать их в DVD | trf_st | UNIX, Linux, MacOs для PC и другие ОС | 1 | 08.12.2007 01:36 |
|
|