Защита от взлома ?

Статус
В этой теме нельзя размещать новые ответы.

RaZEr

Guest
Защита от взлома ?

Как известно многие передают базе данных параметры , которые были получены из строки параметров . Если речь идет о MySQL то это не столь опасно т.к. она не поддерживает встроенные запросы , но все же опасность существует .

Итак о чем речь ?! Ясное дело параметры нужно проверять , так вот вопрос : как это лучше всего реализовать ? Для примера возьмем форму которая передает с десяток параметров по выборке . Что имеем :

1. Referer чекать бесполезно (подделать может каждый 3-ий)
2. Десять параметров которые надо проверить не только на спец. символы и кавычки но и на отсутствие шуток : "&id=567" замененных на "&category=567" (пример натянут , но случаи были , когда вся таблица улетала)
3. Неплохо бы чеать тип и длинну , ведь maxlenght и javascript это фигня .

PS Написать функцию не проблема , но вот как быстро она заработает и сколько параметров придется задать (быстрота нужна , когда просмотр какой-нибудь страницы осуществляется через форму , а посещаемость формы :) около 2000)

PPS Заранее извиняюсь если вопрос глупый
 

su1d

Старожил PHPClubа
Тут DiMA давно ещё продвигал такую фишку, суть которой в том, что перед тем, как вывести линк на страницу, ты получаешь его хэш и выводишь в кач-ве дополнительного параметра.
Простейший пример:
PHP:
$param = "id=0&cat=0";
$hash = md5($param . "secret password");
echo("<a href='blah.php?".$param."&chk=".$hash"'>Link</a>");
в blah.php ты снова получаешь хэш от $QUERY_STRING (без последней переменной ессно) и сравниваешь с пришедшим хешиком из $chk. Если они не совпадают - юзеру говорится о том, кто он такой и куда ему надо идти...

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

si

Administrator
Автор оригинала: su1d
получаешь его хэш и выводишь в кач-ве дополнительного параметра.
Особенно это подходит когда юзер что-то в форму вводит :)

to RaZEr:

Думаю достаточно проверять на соответствие ожидаемого типа и для строк использовать addslaches().

и всегда проверять что возвращают функции ввода/вывода/работы с DB.
 

RaZEr

Guest
2 su1d : Думаю это выход , tnx !

2 si : Тут несколько проблем . Я видимо не ясно выразился :

"&id=567" замененных на "&id=78" так к примеру можно получить доступ на недоступные доныне элементы , например редактируя свои настройки , можно отредактировать настройки кого-нибудь другого .

Я раньше думал извернуться и создать что-то вроде активных запросов : Можно писать в сессию какие линки отдавались пользователю а когда он жмет на линк чекать есть ли такой в массиве . Но учитывая что у меня почти все админские линки генерятся , md5 как нельзя кстати .
 

Alien

Новичок
>так к примеру можно получить доступ на недоступные доныне элементы , например редактируя свои настройки , можно отредактировать настройки кого-нибудь другого .

Ну извини. Это дыра редкостного масштаба.
Права доступа админа (редактора/посетителя) должны проверяться по его сессии (http autorisation, cookie или чем ты пользуешся) а не по тому номеру, что он в форме подсунул.
 

RaZEr

Guest
Re: Re: Защита от взлома ?

Ооо ... да я смотрю у нас тут "Мастера" собрались ... и не замедлили обосрать такого редкостного ламера как я .

ну чтож :

1. Про SELECT (ну пусть DELETE , принцип тот же) :

Пользователю надо грохнуть свою мессагу в форуме : Мы пишем ему линк : thread.php?ac=del&id=678 а он берет и изменяет ID на что_угодно . Так и улетает весь топик . И что мне в сессию писать все ссылки ? Да , это выход :)

2. Про "Права доступа админа (редактора/посетителя) должны проверяться по его сессии" :

Это как ? Мне перед каждым действием пользователя чекать его права ? Количество sql запросов возрастает вдвое :
Чекаем можно ли сделать (показываем ли мы линк) . Чекаем не сам ли набрал в строке .

PS Еще раз tnx 2 su1d , метод отличный и ест немного .
 

Макс

Старожил PHPClub
Re: Re: Re: Защита от взлома ?

Автор оригинала: RaZEr
1. Про SELECT (ну пусть DELETE , принцип тот же) :
Пользователю надо грохнуть свою мессагу в форуме : Мы пишем ему линк : thread.php?ac=del&id=678 а он берет и изменяет ID на что_угодно . Так и улетает весь топик . И что мне в сессию писать все ссылки ? Да , это выход :)
В сессии нужно хранить логин (или какой-то идентификатор пользователя) и перед самым удалением проверить (вероятно через SELECT), принадлежит ли данное сообщение это юзеру. Если да - удаляешь. Если нет - пишешь все что о нем думаешь


2. Про "Права доступа админа (редактора/посетителя) должны проверяться по его сессии" :
Это как ? Мне перед каждым действием пользователя чекать его права ? Количество sql запросов возрастает вдвое :
Чекаем можно ли сделать (показываем ли мы линк) . Чекаем не сам ли набрал в строке .
PS Еще раз tnx 2 su1d , метод отличный и ест немного .
Права тоже в сессии хранить и не будет лишних запросов к БД.
 

RaZEr

Guest
Re: Re: Re: Re: Защита от взлома ?

Автор оригинала: Maxim Matyukhin
В сессии нужно хранить логин (или какой-то идентификатор пользователя) и перед самым удалением проверить (вероятно через SELECT), принадлежит ли данное сообщение это юзеру. Если да - удаляешь. Если нет - пишешь все что о нем думаешь
Права тоже в сессии хранить и не будет лишних запросов к БД.
Ну что в лоб , что по лбу . Тебе русским языком объясняют что так коль-во SQL запросов возрастет вдвое ! Один на показ один на клик . А если проверять то конечно , запрос один , но зато каша в интерфейсе : все видят все ссылки и все разделы/категории . Или ты предлагаешь еще и тут сверять :)
 

Jin

Guest
Re: Re: Re: Re: Re: Защита от взлома ?

Автор оригинала: RaZEr
Ну что в лоб , что по лбу . Тебе русским языком объясняют что так коль-во SQL запросов возрастет вдвое ! Один на показ один на клик . А если проверять то конечно , запрос один , но зато каша в интерфейсе : все видят все ссылки и все разделы/категории . Или ты предлагаешь еще и тут сверять :)
RaZEr Ты читал линк, который я Тебе дал ?
Тебе проверку можно делать только один раз при авторизации.
 

Макс

Старожил PHPClub
Re: Re: Re: Re: Re: Защита от взлома ?

RaZEr
Да че ты из-за одного SQL-запроса так переживаешь.
Во-первых поле вледельца сделай индексом, во-вторых при этом запросе результатом будет 1 строка - для мускуля это мелочи.
Форумы типа VBulleten, XMB более 10 запросов к БД делают при показе одной страницы, и ничего, живут и процветают (правда XMB пересатли писать уже :()

Если все равно не хочешь делать лишний запрос, помести идентификатор пользователя в сессию и в запросах указывай
$query="SELECT ... WHERE login=".$sess['login']." AND id=".$id"
Если запись с указанным ID не принадлежит данному пользоваетлю, запрос не даст результатов.
 

AnToXa

prodigy-одаренный ребенок
Re: Re: Re: Re: Re: Защита от взлома ?

Автор оригинала: RaZEr
Ну что в лоб , что по лбу . Тебе русским языком объясняют что так коль-во SQL запросов возрастет вдвое ! Один на показ один на клик . А если проверять то конечно , запрос один , но зато каша в интерфейсе : все видят все ссылки и все разделы/категории . Или ты предлагаешь еще и тут сверять :)
хм, от двух запросов езе никто не умирал :)
 

RaZEr

Guest
Re: Re: Re: Re: Re: Re: Защита от взлома ?

Я что должен как детям расжовывать что и куда ! Я говорю про двухкратное увеличение запросов aka было 20 стало 40 ! Так вот мне и надо чтобы было 20 ! ... а не 40 . впрочем забудем , я все уже сделал .

Теперь о другом : Как чекать что юзер вводил данные с моей формы а не со своей хацкерской ? (реферер не предлагать)
 

nail

Guest
Re: Re: Re: Re: Re: Re: Re: Защита от взлома ?

Во-первых, смени тон. По твоим мессагам не видно, чтобы ты был программером такого уровня, что можешь разговаривать в таком тоне.
Во-вторых, тебе уже подсказали, как можно обойтись одним запросом.
В-третьих, ты делал профайлинг скриптов, которые используют функцию md5() ? Сделай. Я предпочел бы вставить лишний запрос к БД, чем использовать эту функцию.

Автор оригинала: RaZEr
Я что должен как детям расжовывать что и куда ! Я говорю про двухкратное увеличение запросов aka было 20 стало 40 ! Так вот мне и надо чтобы было 20 ! ... а не 40 . впрочем забудем , я все уже сделал .
Теперь о другом : Как чекать что юзер вводил данные с моей формы а не со своей хацкерской ? (реферер не предлагать)
 

AnToXa

prodigy-одаренный ребенок
Re: Re: Re: Re: Re: Re: Re: Защита от взлома ?

Автор оригинала: RaZEr
Я что должен как детям расжовывать что и куда ! Я говорю про двухкратное увеличение запросов aka было 20 стало 40 ! Так вот мне и надо чтобы было 20 ! ... а не 40 . впрочем забудем , я все уже сделал.
ты пришел сюда свою крутость показывать? :э)
не по адресу, здесь нормальные люди общаются

Теперь о другом : Как чекать что юзер вводил данные с моей формы а не со своей хацкерской ? (реферер не предлагать)
имхо надо чекать данные из формы: addslashes(), приведение типов, проверка регэкспами
 

sapenov

Guest
Re: Re: Re: Re: Re: Re: Re: Защита от взлома ?

Автор оригинала: RaZEr
Я что должен как детям расжовывать что и куда ! Я говорю про двухкратное увеличение запросов aka было 20 стало 40 ! Так вот мне и надо чтобы было 20 ! ... а не 40 . впрочем забудем , я все уже сделал .
Теперь о другом : Как чекать что юзер вводил данные с моей формы а не со своей хацкерской ? (реферер не предлагать)
ну опять же проверяй хэш :)
 

RaZEr

Guest
Re: Re: Re: Re: Re: Re: Re: Re: Защита от взлома ?

Ну нормально ...

... а как мне реагировать если я говорю "не подходит" а мне опять тоже самое втирают . Да и я тему закрыл : "2 su1d : Думаю это выход , tnx !" . А некоторые люди нчали пальцы гнуть , а теперь на меня наезды , что я типа ламер . А чего ж вы "Отцы" молчали когда я спрашивал а вмешались только сейчас ?!!!

2 AnToXa : Достойный ответ : "имхо надо чекать данные из формы: addslashes(), приведение типов, проверка регэкспами"
. Я такого метода не знал :) .

Ладно все , хватит с вас , и так всех обосрал , сори ...

А про формы , прошу простить , вопрос несостоявшийся .

PS Да тех , кто не понял : ТЕМА ЗАКРЫТА !
 

AnToXa

prodigy-одаренный ребенок
Re: Re: Re: Re: Re: Re: Re: Re: Re: Защита от взлома ?

да, кстати, на закрытие темы: у тебя мания величия :)
 

leosha

Старожил PHPCLub
http://mdcrack.df.ru/index2.html

Особенно http://mdcrack.df.ru/index2.html#abstract
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху