 |
 |
Форум сетевых администраторов » Программирование » PHP » Безопасность в скриптах
| Автор |
| Тема |
 |
|
 |
|
|
|
-= n0b0dy =-

Зарегистрирован: Oct 2001
Место проживания: rus|53
Публикаций: 624
Статус:  |
Вот хочется узнать народные методы повышения безопасности скриптов.
Особенно интересны методы предотвращения SQL Injection и Code Injection.
Ну если есть просвященные по XSS тоже буду рад почитать.
Чуть по позже опишу свои параноидальные идеи 
__________________
No pity, no mercy, no regret.
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
28-02-2004 23:48 |
|
|
Участник+
|
Моё скромное 
Советы банальны, проверять... |
[сооб. #61867]
29-02-2004 03:52 |
|
Участник+


Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: ![he][es в оф-лайне](images/offline.gif) |
Моё скромное 
Советы банальны, проверять ВСЕ приходящие от пользователя переменные на валидность... и будет вам счастье... 
__________________
Админ - вождь Апачей...
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
29-02-2004 03:52 |
|
|
-= n0b0dy =-
|
Я спрашивал методы =) Проверять можно по разному.
Можно... |
[сооб. #61876]
29-02-2004 08:56 |
|
-= n0b0dy =-

Зарегистрирован: Oct 2001
Место проживания: rus|53
Публикаций: 624
Статус:  |
Я спрашивал методы =) Проверять можно по разному.
Можно держать в голове и в одном месте ошибится, можно предоставить это самому скрипту, но тут тоже загвоздки есть.
__________________
No pity, no mercy, no regret.
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
29-02-2004 08:56 |
|
|
Администратор
|
| Особо нужно проверять те значения которые... |
[сооб. #61878]
29-02-2004 11:11 |
|
Администратор


Зарегистрирован: May 2001
Место проживания:
Публикаций: 4642
Статус:  |
Особо нужно проверять те значения которые потом будут использоваться при обращении к базе. Ошибаться тут не нужно, так как каждая ошибка это дыра в скрипте.
__________________
Всегда есть решение.
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
29-02-2004 11:11 |
|
|
Участник+
|
[QUOTE]
Можно держать в голове и в одном месте... |
[сооб. #61901]
29-02-2004 21:58 |
|
Участник+


Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: ![he][es в оф-лайне](images/offline.gif) |
quote:
Можно держать в голове и в одном месте ошибится, можно предоставить это самому скрипту, но тут тоже загвоздки есть.
Нафига тебе чего то в голове то держать?
и что значит "можно предоставить это самому скрипту"?
Берешь ты из GET-a цифру, так проверь, что это цифра или скажи ей что она цифра 
__________________
Админ - вождь Апачей...
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
29-02-2004 21:58 |
|
|
-= n0b0dy =-
|
| [quote]Берешь ты из GET-a цифру, так проверь, что... |
[сооб. #61903]
29-02-2004 22:34 |
|
-= n0b0dy =-

Зарегистрирован: Oct 2001
Место проживания: rus|53
Публикаций: 624
Статус:  |
quote: Берешь ты из GET-a цифру, так проверь, что это цифра или скажи ей что она цифра
вот походу ты начинаешь понимать о чем я разговор завел.
quote: Особо нужно проверять те значения которые потом будут использоваться при обращении к базе. Ошибаться тут не нужно, так как каждая ошибка это дыра в скрипте.
ну я не первый год женат =) А по поводу не нужно ошибаться, тут проблема стандартна, к сожалению при наращивании функциональности на скрипт иногда происходят нежелательные ошибки, тем более когда скрипт разрастается. Как говорится: "никто не застрахован".
Вот давайте рассуждать что необходимо для "ленивой" безопасности:
1. register_globals = 0 или же пишем так как будто выключена. Следовательно получаем значения присланные пользователем из $_POST и $_GET
2. раз мы уж получаем значения, то почему бы сразу их не обработать. Допустим под это дело мы выведем функцию, с параметрами названий переменных которых мы должны глобализовать.
3. а почему бы в пункте 2 сразу и не привести глобализуемые переменные:
а) к необходимому типу (допустим я все переменные обозначаю по Венгерской нотации)
б) очистить их от нежелаемого контента
Вот в таком путь имеет какие либо подводные камни?
Про работу с базой мы поговорим позже.
__________________
No pity, no mercy, no regret.
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
29-02-2004 22:34 |
|
|
Администратор
|
| У каждого свои методы программирования, глобализовать... |
[сооб. #61907]
29-02-2004 22:57 |
|
Администратор


Зарегистрирован: May 2001
Место проживания:
Публикаций: 4642
Статус:  |
У каждого свои методы программирования, глобализовать только нужные переменные легко, но вто как их сразу проверить? Ну можно сделать общие проверки типа trim, ну еще удалить javascript, иметь общие название например для передаваемых ID (они опаснее всего и чаще всего передаются) и превратить их в intval, на этом дело заканчивается. Далее нужно все проверять индивидуально, я к тому что нельзя написать универсальную функцию для этого.
__________________
Всегда есть решение.
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
29-02-2004 22:57 |
|
|
SiteMaker
|
Замечательная функция:
[php]
function xss_clean($var)
{
$var... |
[сооб. #62207]
06-03-2004 21:20 |
|
SiteMaker


Зарегистрирован: Jun 2002
Место проживания: Israel
Публикаций: 220
Статус:  |
Замечательная функция:
PHP:
function xss_clean($var)
{
$var = preg_replace( '/javascript/i', 'java script', $var );
$var = str_replace( '"', '"', $var );
$var = str_replace( '<', '<', $var );
return str_replace( '>', '>', $var );
}
чистит весь критичный юзер-инпут.
Плюс ко всему, я например использую функцию, которая валидирует практически любой юзер-инпут: начиная с интов, флоатов, email, и кончая IP с разными условиями и MAC адресами.
Что еще сказать... В запросах всегда использую одинарные кавычки вокруг переменных. И насчет magic_quotes_gpc... надо быть очень внимательным, если она включена.
__________________
`
SiteMaker.Ru - Академия сайтостроительства
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
06-03-2004 21:20 |
|
|
-= n0b0dy =-
|
| [quote]которая валидирует практически любой... |
[сооб. #62208]
06-03-2004 21:39 |
|
-= n0b0dy =-

Зарегистрирован: Oct 2001
Место проживания: rus|53
Публикаций: 624
Статус:  |
quote: которая валидирует практически любой юзер-инпут: начиная с интов, флоатов, email, и кончая IP с разными условиями и MAC адресами
каким образом распознаешь как надо валидацию делать?
что то у меня кроме особого названия переменных ничего больше не придумать
__________________
No pity, no mercy, no regret.
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
06-03-2004 21:39 |
|
|
SiteMaker
|
| field_validator($field_descr, $field_data, $field_type, $min_length="", $max_length="",... |
[сооб. #62209]
06-03-2004 23:27 |
|
SiteMaker


Зарегистрирован: Jun 2002
Место проживания: Israel
Публикаций: 220
Статус:  |
field_validator($field_descr, $field_data, $field_type, $min_length="", $max_length="", $field_required=1)
__________________
`
SiteMaker.Ru - Академия сайтостроительства
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
06-03-2004 23:27 |
|
|
-= n0b0dy =-
|
| Denveroid понятно, просто ты ручками обрабатываешь... |
[сооб. #62244]
07-03-2004 11:02 |
|
-= n0b0dy =-

Зарегистрирован: Oct 2001
Место проживания: rus|53
Публикаций: 624
Статус:  |
Denveroid понятно, просто ты ручками обрабатываешь входные переменные, поочередно прогоняя их через эту функцию, самостоятельно указывая тип.
__________________
No pity, no mercy, no regret.
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
07-03-2004 11:02 |
|
|
SiteMaker
|
Vanish
Совершенно верно. Ну а чего тут велосипед... |
[сооб. #62256]
07-03-2004 13:10 |
|
SiteMaker


Зарегистрирован: Jun 2002
Место проживания: Israel
Публикаций: 220
Статус:  |
Vanish
Совершенно верно. Ну а чего тут велосипед придумывать то? 
__________________
`
SiteMaker.Ru - Академия сайтостроительства
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
07-03-2004 13:10 |
|
|
Участник+
|
Denveroid
Не перегружая обработчик повторами... |
[сооб. #63968]
01-04-2004 02:15 |
|
Участник+

Зарегистрирован: Jun 2002
Место проживания: Украина
Публикаций: 83
Статус:  |
Denveroid
Не перегружая обработчик повторами функций можно записать
PHP:
$typed_text = htmlspecialchars($typed_text, ENT_QUOTES);
что в результате аналогично этому ... а выполняеться побыстрее
PHP:
function xss_clean($var)
{
$var = preg_replace( '/javascript/i', 'java script', $var );
$var = str_replace( '"', '"', $var );
$var = str_replace( '<', '<', $var );
return str_replace( '>', '>', $var );
}
__________________
Есть вопросы спрашивайте!
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
01-04-2004 02:15 |
|
|
Power in your mind !
|
| Господа, а не забацать ли нам класс по этому... |
[сооб. #64061]
02-04-2004 15:55 |
|
Power in your mind !


Зарегистрирован: Sep 2002
Место проживания: Moscow
Публикаций: 172
Статус:  |
Господа, а не забацать ли нам класс по этому поводу ? ... Один глобальный класс , который решит проблемму приходящей от конечного пользователя информации .
P.S.: Не слушайте пьяных людей (что-то последнее время очень часто дни рождения у юзеров )
__________________
Ковчег построили дилетанты, а профессионаллы построили "Титаник" - не бойтесь спрашивать то , чего вы не знаете , а так же делать то - чего не умеете ! 
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
02-04-2004 15:55 |
|
|
-= n0b0dy =-
|
что то господ на чистую воду не вывести, жмутся...
вспомним... |
[сооб. #64064]
02-04-2004 17:30 |
|
-= n0b0dy =-

Зарегистрирован: Oct 2001
Место проживания: rus|53
Публикаций: 624
Статус:  |
что то господ на чистую воду не вывести, жмутся...
вспомним венгерскую нотацию, там же тип в имени переменной указывается, а это шаг к возможности определения типа переменной в скрипте и проверка на валидность пришедших данных.
__________________
No pity, no mercy, no regret.
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
02-04-2004 17:30 |
|
|
|
Формат времени GMT. Текущее время 12:36.
|
Правила форума:
Вы не можете создавать новые темы.
Вы не можете отвечать на существующие темы.
Вы не можете прикреплять файлы.
Вы не можете редактировать свои сообщения. |
HTML теги выкл.
Спец. код вкл.
Смайлики вкл.
[IMG] тег выкл.
|
|
|
|
| |
Page generated in 0.28504992 seconds (97.95% PHP - 2.05% MySQL) with 26 queries.
|
 |