Форум программистов, компьютерный форум, киберфорум
Наши страницы

PHP: базы данных

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
philcrosoft
3 / 3 / 0
Регистрация: 19.09.2010
Сообщений: 253
#1

Безопасность для новичков! прошу помочь! - PHP БД

07.03.2011, 21:05. Просмотров 1232. Ответов 15
Метки нет (Все метки)

В общем для отправки данных использую вот этот простой код:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
class ExceptReg extends Exception {}
try
 
{ include_once ( "connect.php" ) ;
if ( isset( $_POST['submit'] ) ){
if ( empty( $_POST['category'] ) ){
throw new ExceptReg( 'Âû Г*ГҐ ГіГЄГ*Г§Г*ëè ГЄГ*òåãîðèþ!' ) ;}
if ( empty( $_POST['author'] ) ){
throw new ExceptReg( 'Âû Г*ГҐ ГіГЄГ*Г§Г*ëè Г*âòîðГ* ëåêöèè!' ) ;}
if ( empty( $_POST['name'] ) ){
throw new ExceptReg( 'Âû Г*ГҐ ââåëè Г*Г*çâГ*Г*ГЁГҐ ëåêöèè' ) ;}
if ( empty( $_POST['size'] ) ){
throw new ExceptReg( 'Âû Г*ГҐ ГіГЄГ*Г§Г*ëè Г°Г*çìåð ГґГ*éëГ*' ) ;}
if ( empty( $_POST['duaration'] ) ){
throw new ExceptReg( 'Âû Г*ГҐ ГіГЄГ*Г§Г*ëè ïðîäîëæèòåëüГ*îñòü ëåêöèè' ) ;}
if ( empty( $_POST['description'] ) ){
throw new ExceptReg( 'Âû Г*ГҐ ГіГЄГ*Г§Г*ëè ГЄГ°Г*òêîå îïèñГ*Г*ГЁГҐ ëåêöèè!' ) ;}
if ( empty( $_POST['link'] ) ){
throw new ExceptReg( 'Âû Г*ГҐ ГіГЄГ*Г§Г*ëè ññûëêó Г*Г* ëåêöèþ!' ) ;}
 
 
$category = $_POST['category'] ;
$author = $_POST['author'] ;
$name = $_POST['name'] ;
$size = $_POST['size'] ;
$duaration = $_POST['duaration'] ;
$description = $_POST['description'] ;
$link = $_POST['link'] ;
$id_dates = date('Y-m-d H:i:s');
 
$query = "SELECT `id` FROM `files` WHERE `link`='{$link}'" ;
$sql = mysql_query( $query ) or die( mysql_error() ) ;
if ( mysql_num_rows( $sql ) > 0 )
{
throw new ExceptReg( 'ГЏГ® ýòîé ññûëêå ГґГ*ГЁГ« óæå Г§Г*ðåãåñòðèðîâГ*Г*!' ) ;
}
 
$query = "INSERT INTO files(category , author , name , size , duaration , description , link , input_date)
VALUES ('$category', '$author', '$name', '$size', '$duaration', '$description', '$link', '$id_dates')" ;
$result = mysql_query( $query ) or die( mysql_error() ) ;
 
echo 'ГђГҐГЈГЁГ±ГІГ°Г*öèÿ ññûëêè ïðîøëГ* ГіГ±ГЇГҐГёГ*Г®! ' ;}
}
catch ( ExceptReg $e )
{
echo '<font color="red">ГЋГёГЁГЎГЄГ* ðåãèñòðГ*öèè: ' . $e->getMessage() . '</font>';
}
Прошу помочь с безопасностью! чтобы через форму ввода данных не смогли взломать базу! благодарю!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.03.2011, 21:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Безопасность для новичков! прошу помочь! (PHP БД):

прошу помочь разобраться с COUNT() и AVG() - PHP БД
значит вот, чтобы было понятно: например, в БД есть список зарегистрированных юзверей, и мне нужно узнать сколько их всего и ...

Безопасность входящих данных для LIKE (SQL) - PHP
Большая просьба к опытными программистам, прокомментируйте мою функцию для фильтрования переменных, участвующих в поисковых SQL-запросах...

Абрамов № 61, 85, 334(а), 374, 67(б,а). Прошу помочь, мне нужны эти задания для зачета прошу помощи. - Turbo Pascal
Прошу помощи, скачайте файл Абрамов (пожалуйста), номер 61, 85, 334(а), 374, 67(а,б). Помочите чем сможете пожалуйста

Прошу помочь с выбором нетбука для Жены - Выбор ноутбука
Привет всем. Я никогда не сталкивался с нетбуком, поэтому прошу у Вас помощи. Я решил подарить на ДР жены нетбук,темболее она давно...

Прошу помочь новичку в visual с++ ,для контрольной работы - Visual C++
создать в MFC-приложение. Написать функцию которая бы возвращала двоичное представление заданного числа

!!! знающие люди прошу для благого проекта помочь без загрузки харда выводить 20 записей из 20000 - MS Access
Мне нужно, для выкладки благого проекта базы Памятных книг губерний Российской империи, максимально соптимизировать вывод. Сейчас у меня...

15
Humanoid
Почетный модератор
9877 / 3778 / 175
Регистрация: 12.06.2008
Сообщений: 11,200
07.03.2011, 21:12 #2
Все переменные, получаемые от браузера (через $_POST, $_GET, $_COOKIE и т.п.) нужно пропускать через mysql_real_escape_string() или, в крайнем случае, через addslashes(). Если заранее известно, что в переменной должно быть число, то лучше насильно указать тип integer... и содержимое всех столбцов лучше указывать в кавычках (ты это и так делаешь).
1
__PION__
954 / 795 / 12
Регистрация: 21.07.2010
Сообщений: 3,521
08.03.2011, 13:15 #3
Цитата Сообщение от Humanoid Посмотреть сообщение
содержимое всех столбцов лучше указывать в кавычках
не лучше ли все кавычки отключить через .htaccess?
Я слышал, что не все хостинги это поддерживают правда, но зачем такой хостинг нужен
0
Humanoid
Почетный модератор
9877 / 3778 / 175
Регистрация: 12.06.2008
Сообщений: 11,200
08.03.2011, 16:43 #4
Цитата Сообщение от Love_and_Peace Посмотреть сообщение
не лучше ли все кавычки отключить через .htaccess?
А если надо будет текст сохранить, в котором кавычки присутствуют? Они же тогда пропадут из текста?
0
__PION__
954 / 795 / 12
Регистрация: 21.07.2010
Сообщений: 3,521
08.03.2011, 16:47 #5
Цитата Сообщение от Humanoid Посмотреть сообщение
Они же тогда пропадут из текста?
да нет, они же отключают волшебные кавычки

Добавлено через 27 секунд
вот так
Код
php_flag magic_quotes_gpc 0
php_flag magic_quotes_runtime 0
0
Humanoid
Почетный модератор
9877 / 3778 / 175
Регистрация: 12.06.2008
Сообщений: 11,200
08.03.2011, 16:49 #6
Love_and_Peace, ааа ну это да... такие лучше отключать и экранировать в тексте скрипта. Только они в php.ini отключаются, а не в .htaccess
Кстати, в современных версиях PHP они по умолчанию отключены... а в шестой версии их вообще не будет.
0
__PION__
954 / 795 / 12
Регистрация: 21.07.2010
Сообщений: 3,521
08.03.2011, 16:52 #7
Цитата Сообщение от Humanoid Посмотреть сообщение
а в шестой версии их вообще не будет
да, про это слышал, это гуд
Цитата Сообщение от Humanoid Посмотреть сообщение
Только они в php.ini отключаются, а не в .htaccess
эта копи/паст из моего файла .htaccess, который работает.
и если бы они так не отключались зачем тогда такие ф-ии придумали
1
philcrosoft
3 / 3 / 0
Регистрация: 19.09.2010
Сообщений: 253
21.03.2011, 23:26  [ТС] #8
Цитата Сообщение от Humanoid Посмотреть сообщение
Все переменные, получаемые от браузера (через $_POST, $_GET, $_COOKIE и т.п.) нужно пропускать через mysql_real_escape_string() или, в крайнем случае, через addslashes(). Если заранее известно, что в переменной должно быть число, то лучше насильно указать тип integer... и содержимое всех столбцов лучше указывать в кавычках (ты это и так делаешь).
спасибо! так стоит ли мой код "пропустить через mysql_real_escape_string()" или в принципе оставить всё как есть?
0
__PION__
954 / 795 / 12
Регистрация: 21.07.2010
Сообщений: 3,521
22.03.2011, 14:32 #9
Цитата Сообщение от philcrosoft Посмотреть сообщение
так стоит ли мой код "пропустить через mysql_real_escape_string()" или в принципе оставить всё как есть?
пропусти!
0
afiskon
65 / 53 / 3
Регистрация: 06.09.2010
Сообщений: 254
22.03.2011, 16:08 #10
Цитата Сообщение от Humanoid Посмотреть сообщение
Все переменные, получаемые от браузера (через $_POST, $_GET, $_COOKIE и т.п.) нужно пропускать через mysql_real_escape_string() или, в крайнем случае, через addslashes(). Если заранее известно, что в переменной должно быть число, то лучше насильно указать тип integer... и содержимое всех столбцов лучше указывать в кавычках (ты это и так делаешь).
А еще лучше - проверять на корректность регулярными выражениями как на стороне клиента, так и сервера. Если серверу приходят некорректные данные, писать логи, мол сайт пытаются ломать, а "хэккера" слать по дефолтовому маршруту.
0
Humanoid
Почетный модератор
9877 / 3778 / 175
Регистрация: 12.06.2008
Сообщений: 11,200
22.03.2011, 17:04 #11
afiskon, регулярки слишком медленные, что бы использовать их к каждому запросу. Да и когда в POST приходят кавычки - это ещё не значит, что это хакер орудует.
0
philcrosoft
3 / 3 / 0
Регистрация: 19.09.2010
Сообщений: 253
01.06.2011, 20:26  [ТС] #12
народ! привет помогите пожалуйста сделать в моей регистрации запрет на использование символов ";/\<> и других!
именно к коду на первой странице!

Добавлено через 14 минут
PHP
1
2
3
4
if (preg_match("/[^(w)|(x7F-xFF)|(s)]/",$login))
{
throw new ExceptReg('Dont use symbols');
}
не работает (((
0
Humanoid
Почетный модератор
9877 / 3778 / 175
Регистрация: 12.06.2008
Сообщений: 11,200
01.06.2011, 21:28 #13
Возможно, что-то вроде такого?
PHP
1
preg_match("/[^0-9A-z]/",$login)
Только я не уверен, правильно ли я поставил символ отрицания... не помню, надо внутри скобок или снаружи его ставить. Кажется, внутри, как у тебя. Кстати, ты перед буквами слеш не ставишь... а надо.
0
philcrosoft
3 / 3 / 0
Регистрация: 19.09.2010
Сообщений: 253
08.08.2011, 21:41  [ТС] #14
народ скажите в чём принцип работы mysql_real_escape_string ... как он защищает от инъекций?
0
Humanoid
Почетный модератор
9877 / 3778 / 175
Регистрация: 12.06.2008
Сообщений: 11,200
08.08.2011, 21:47 #15
Цитата Сообщение от philcrosoft Посмотреть сообщение
народ скажите в чём принцип работы mysql_real_escape_string ... как он защищает от инъекций?
В описании функции сказано:
mysql_real_escape_string() вызывает библиотечную функцмю MySQL mysql_real_escape_string, которая добавляет обратную косую черту к следующим символам: \x00, \n, \r, \, ', " и \x1a.
Таким образом это гарантирует, что пользовательские данные останутся только данными и не изменят сам запрос.
0
08.08.2011, 21:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.08.2011, 21:47
Привет! Вот еще темы с ответами:

Прошу помочь - C++
Нужно привести програмку в порядок, с первой частью вроде справился, со второй не могу, ошибка С2784. Первая часть: было: ...

Прошу помочь - Windows 7
зДравствуйте. прошу вас помочь. извините за такое написание, но у меня ппроблемы с клавиатурой. ОС - виндовс 7.обычный компьютер, не...

прошу помочь - BIOS
Здраствуйте! У меня такая проблема, при входе в Windows стоял пароль, который я забыл. Я переустоновил винду, не форматируя винт. Теперь с...

Прошу помочь - Flash
Ребят, помогите игру короткие нарды найти пожалуйста... измучился уже, пол интернета перелопатил. суть такая - залив файлы игры на какой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.