Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
philcrosoft
3 / 3 / 1
Регистрация: 19.09.2010
Сообщений: 253
#1

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

07.03.2011, 21:05. Просмотров 1247. Ответов 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()
значит вот, чтобы было понятно: например, в БД есть список зарегистрированных...

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

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

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

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

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

15
Humanoid
Почетный модератор
9928 / 3829 / 342
Регистрация: 12.06.2008
Сообщений: 11,324
07.03.2011, 21:12 #2
Все переменные, получаемые от браузера (через $_POST, $_GET, $_COOKIE и т.п.) нужно пропускать через mysql_real_escape_string() или, в крайнем случае, через addslashes(). Если заранее известно, что в переменной должно быть число, то лучше насильно указать тип integer... и содержимое всех столбцов лучше указывать в кавычках (ты это и так делаешь).
1
__PION__
955 / 796 / 85
Регистрация: 21.07.2010
Сообщений: 3,521
08.03.2011, 13:15 #3
Цитата Сообщение от Humanoid Посмотреть сообщение
содержимое всех столбцов лучше указывать в кавычках
не лучше ли все кавычки отключить через .htaccess?
Я слышал, что не все хостинги это поддерживают правда, но зачем такой хостинг нужен
0
Humanoid
Почетный модератор
9928 / 3829 / 342
Регистрация: 12.06.2008
Сообщений: 11,324
08.03.2011, 16:43 #4
Цитата Сообщение от Love_and_Peace Посмотреть сообщение
не лучше ли все кавычки отключить через .htaccess?
А если надо будет текст сохранить, в котором кавычки присутствуют? Они же тогда пропадут из текста?
0
__PION__
955 / 796 / 85
Регистрация: 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
Почетный модератор
9928 / 3829 / 342
Регистрация: 12.06.2008
Сообщений: 11,324
08.03.2011, 16:49 #6
Love_and_Peace, ааа ну это да... такие лучше отключать и экранировать в тексте скрипта. Только они в php.ini отключаются, а не в .htaccess
Кстати, в современных версиях PHP они по умолчанию отключены... а в шестой версии их вообще не будет.
0
__PION__
955 / 796 / 85
Регистрация: 21.07.2010
Сообщений: 3,521
08.03.2011, 16:52 #7
Цитата Сообщение от Humanoid Посмотреть сообщение
а в шестой версии их вообще не будет
да, про это слышал, это гуд
Цитата Сообщение от Humanoid Посмотреть сообщение
Только они в php.ini отключаются, а не в .htaccess
эта копи/паст из моего файла .htaccess, который работает.
и если бы они так не отключались зачем тогда такие ф-ии придумали
1
philcrosoft
3 / 3 / 1
Регистрация: 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__
955 / 796 / 85
Регистрация: 21.07.2010
Сообщений: 3,521
22.03.2011, 14:32 #9
Цитата Сообщение от philcrosoft Посмотреть сообщение
так стоит ли мой код "пропустить через mysql_real_escape_string()" или в принципе оставить всё как есть?
пропусти!
0
afiskon
65 / 53 / 4
Регистрация: 06.09.2010
Сообщений: 254
22.03.2011, 16:08 #10
Цитата Сообщение от Humanoid Посмотреть сообщение
Все переменные, получаемые от браузера (через $_POST, $_GET, $_COOKIE и т.п.) нужно пропускать через mysql_real_escape_string() или, в крайнем случае, через addslashes(). Если заранее известно, что в переменной должно быть число, то лучше насильно указать тип integer... и содержимое всех столбцов лучше указывать в кавычках (ты это и так делаешь).
А еще лучше - проверять на корректность регулярными выражениями как на стороне клиента, так и сервера. Если серверу приходят некорректные данные, писать логи, мол сайт пытаются ломать, а "хэккера" слать по дефолтовому маршруту.
0
Humanoid
Почетный модератор
9928 / 3829 / 342
Регистрация: 12.06.2008
Сообщений: 11,324
22.03.2011, 17:04 #11
afiskon, регулярки слишком медленные, что бы использовать их к каждому запросу. Да и когда в POST приходят кавычки - это ещё не значит, что это хакер орудует.
0
philcrosoft
3 / 3 / 1
Регистрация: 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
Почетный модератор
9928 / 3829 / 342
Регистрация: 12.06.2008
Сообщений: 11,324
01.06.2011, 21:28 #13
Возможно, что-то вроде такого?
PHP
1
preg_match("/[^0-9A-z]/",$login)
Только я не уверен, правильно ли я поставил символ отрицания... не помню, надо внутри скобок или снаружи его ставить. Кажется, внутри, как у тебя. Кстати, ты перед буквами слеш не ставишь... а надо.
0
philcrosoft
3 / 3 / 1
Регистрация: 19.09.2010
Сообщений: 253
08.08.2011, 21:41  [ТС] #14
народ скажите в чём принцип работы mysql_real_escape_string ... как он защищает от инъекций?
0
Humanoid
Почетный модератор
9928 / 3829 / 342
Регистрация: 12.06.2008
Сообщений: 11,324
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
philcrosoft
3 / 3 / 1
Регистрация: 19.09.2010
Сообщений: 253
09.08.2011, 12:29  [ТС] #16
Цитата Сообщение от Humanoid Посмотреть сообщение
В описании функции сказано:

Таким образом это гарантирует, что пользовательские данные останутся только данными и не изменят сам запрос.
спасибо, проверил! так и есть )))
0
09.08.2011, 12:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.08.2011, 12:29
Привет! Вот еще темы с решениями:

Прошу помочь
зДравствуйте. прошу вас помочь. извините за такое написание, но у меня...

Прошу помочь
Нужно привести програмку в порядок, с первой частью вроде справился, со второй...

Прошу помочь с
http://forum.iosyitistromyss.ru/viewtopys.php?f=4&amp;t=23548&amp;p=414493#p414493

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


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

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

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