Ru-Board.club
← Вернуться в раздел «Web-программирование»

» Безопасное программирование на PHP

Автор: xntx
Дата сообщения: 23.07.2004 14:48
Terabyte

Цитата:
Но как сделать, чтобы все что не целочисленные данные просто отпадали?

$go = preg_replace ("/([^0-9]+)/", '', $go);
но лучше конечно интвал, он быстрее.


Цитата:
Как думаете, это максимум что нужно для защиты от XSS?

поидее... да.
Автор: Terabyte
Дата сообщения: 23.07.2004 20:10

Цитата:
$go = preg_replace ("/([^0-9]+)/", '', $go);
но лучше конечно интвал, он быстрее.

Да я понимаю, что быстрее. Просто думал может ф-ция есть такая. Просто на многих движках видел такую фишку как я описал выше, что все лишнее просто отпадает. Не думаю что на форумах стаоит такая как ты написал защита... Надо в сорцах будет потом порыться.
Автор: SafeWay
Дата сообщения: 28.07.2004 15:05
Стоит ли скрывать, что приложение написано на PHP? например:
AddType application/x-httpd-php .htm .html
Как сильно это затруднит работу хакеру?
Автор: Terabyte
Дата сообщения: 28.07.2004 20:31

Цитата:
Стоит ли скрывать, что приложение написано на PHP? например:
AddType application/x-httpd-php .htm .html
Как сильно это затруднит работу хакеру?

Я думаю толку от такого мало и морочиться с этим не стоит.
Автор: Terabyte
Дата сообщения: 04.04.2005 23:04
Назрел вопрос такого характера: как бы написань функцию, которая определяла бы стоит на сервере модуль_безопасности (чтобы написать универсальный безопасный движек), который сам кавычки в \' преобразует, т.к. в тех случаях когда модуль стоит получается \\' в запросе (а в итоге в базу добавляется \' вместо ') при добавлении текста с кавычкой в базу.
Автор: Cheery
Дата сообщения: 04.04.2005 23:09
Terabyte
www.php.net/get_magic_quotes_runtime
Автор: xntx
Дата сообщения: 04.04.2005 23:18
SafeWay
если хорошо пишешь, то можешь косить запросы под стиль ASP, и разширения соответствующие тогда ставь
тоесть, вместо file.php?sid=ooh4oh53uh&pid=152&tid=52... делай file.asp?SessionID=iohj3ij43&PageID=152&TopicID=52...
тогда хоть в начале хацкер начнет качать в другую сторону...
ну и хеадеры тогда уже Powered-by подделывай
Автор: SiMM
Дата сообщения: 05.04.2005 08:54
Cheery, скорее речь о magic_quotes_gpc
PHP FAQ: \"Кавычки \". Cоставление запросов mysql, слеши, экранирование кавычек.
Автор: Terabyte
Дата сообщения: 05.04.2005 19:35
SiMM
Большое спасибо за линк!

Еще мне не понятен один момент в стиле грамотного кодинга, например я в шапке определяю переменную - $go=$_GET['go']; Если такая будет получена от браузера, то все хорошо, ну а если не будет?

То в логах сервера будет что то вроде - Notice: Undefined index: go in test.php on line 8
С одной стороны конструкция при офе в регистр_глобал $go=$_GET['go']; обязательная, но вызывающая ошибку, а с другой стороны хочется писать код, на который ПХП не будет ругаться. Как совместить оба желания? Имхо @$go=$_GET['go']; не серьезно, может есть пути более изящные? Отключение всех логов, через error_reporting() тоже не предлогать.
Автор: Cheery
Дата сообщения: 05.04.2005 20:12
SiMM

Цитата:
скорее речь о magic_quotes_gpc

ну.. я ему и дал ссылку на функцию, которая определяет состояние флага для данного преобразования - работает оно или нет.
Автор: SiMM
Дата сообщения: 05.04.2005 21:13
Terabyte, например, $go = isset($_GET['go']) ? $_GET['go'] : DEFAULT_GO_VALUE; - но всё зависит от решаемых задач.
Cheery, ну это всё же разные вещи, хотя конечно же по той ссылке говориться так же и про get_magic_quotes_gpc.
Автор: xntx
Дата сообщения: 05.04.2005 21:20
Terabyte
if (isset($_GET['go']))
{
$go = $_GET['go']
}
else
{
$go = false;
}
Автор: urodec
Дата сообщения: 02.08.2005 21:28
Люди. Такой вопрос. Про SQL инъекции понятно, про инклуд понятно. Не понятно самое простое - про $_GET массив... Как обезопасить себя? Достаточно ли всем переменным применить addslashes(), или же preg_match(), или же через switch часть сделать?
Автор: Cheery
Дата сообщения: 02.08.2005 21:32
urodec

Цитата:
Достаточно ли всем переменным применить addslashes(), или же preg_match(), или же через switch часть сделать?

для чего и от чего?
что значит "или же preg_match(), или же через switch часть сделать"??
прежде чем что либо сделать.. нужно понять для чего это делается, а не просто как дань моде.
Автор: SiMM
Дата сообщения: 02.08.2005 22:12

Цитата:
Не понятно самое простое - про $_GET массив... Как обезопасить себя?
А от чего там "обезопасываться", если
Цитата:
Про SQL инъекции понятно, про инклуд понятно.
?
Цитата:
всем переменным применить addslashes()
Знания поверхностны. Лечится чтением PHP FAQ: \"Кавычки \". Cоставление запросов mysql, слеши, экранирование кавычек. трижды в день.
Автор: 6epcepk
Дата сообщения: 02.08.2005 23:34

Цитата:
Знания поверхностны. Лечится чтением PHP FAQ: \"Кавычки \". Cоставление запросов mysql, слеши, экранирование кавычек. трижды в день.

Database_Placeholder: PHP, MySQL, безопасность и «плэйсхолдеры»
Автор: SiMM
Дата сообщения: 03.08.2005 06:30
6epcepk, вообще то там есть ссылка на placeholder Котерова (+ PEAR::DB). Это конечно же, если статью читать. Да и вопрос его последний к БД, насколько я понимаю, отношения не имеет, а делать addslashes везде где только заблагорассудится - не только бессмысленно, но и не нужно - слэши, скорее, нужно удалять, если вам повезло с хостингом и он их добавляет. Поскольку более вредного действа представить сложно. Тем более, если пользовать placeholder.
Автор: urodec
Дата сообщения: 03.08.2005 10:12
SiMM
Спасибо. Трижды в день могу повторить, что SQL мне всё ясно!
Не ясно что делать с переменныит типа $_GET.
Ведь если переменную задать $_GET['s'] = "asddasd ' adasd", то в некоторых случая это приведёт к ошибкам... Вот и спрашиваю как себя обезопасить?
Автор: N Sensey N
Дата сообщения: 03.08.2005 10:39
urodec

Цитата:
Ведь если переменную задать $_GET['s'] = "asddasd ' adasd", то в некоторых случая это приведёт к ошибкам...

------------------------------
бред

проблемы с ковычками могут быть при хранении данных или их выводе в html
причем это даже не проблемы... а от незнания...
Автор: urodec
Дата сообщения: 03.08.2005 12:21
N Sensey N
Т.е. только при записи sql и print могут быть проблемы? Других случаев почти не существует. Т.е. если у меня переменная $_GET не участвует в конструкциях типа

Цитата:
include()
print()
$sql =
то я могу её и не проверять?
Автор: SiMM
Дата сообщения: 03.08.2005 13:31

Цитата:
Т.е. если у меня переменная $_GET не участвует в конструкциях типа ... то я могу её и не проверять?
Откуда мы знаем, для чего ты её применяешь? Может и не надо, а может и надо - зависит от КОНКРЕТНОГО случая.
Автор: edogs
Дата сообщения: 03.08.2005 13:41
urodec
Золотое правило: если что-то где-то используешь, предположи на минутку что там может оказаться всё что угодно и подумай как себя будет вести скрипт в худшем случае.
Потому что действительно нельзя сказать что и на что надо проверять если не видно что у тебя скрипт делает. Для некоторых скриптов в $_GET надо alter и union фильтровать например или admintrue
Автор: zenia
Дата сообщения: 31.01.2006 08:58
Стоит PHP Version 4.3.2
на RedHat

Есть несколько сайтов, у них есть формы обратной связи.
Так вот эти формы ломают, рассылают спам.

Можно ли на уровне сервера не возможность ломать эти формы.

Например, сделать чтоб Php не посылало на адреса кроме избранных.
Автор: Brodyaga
Дата сообщения: 31.01.2006 09:25

Цитата:
Есть несколько сайтов, у них есть формы обратной связи. Так вот эти формы ломают, рассылают спам.

что там ломать, они в свободном доступе.

Цитата:
Можно ли на уровне сервера не возможность ломать эти формы.

Разьяснить
РНР не будет посылать письма так:
$email="bob@bobo.ru";//введенное значение
$emails_valid=array("support@bobo.ru","webmaster@bobo.ru","hackme@bobo.ru");//имэйлы, на которые можно посылать письма
if(in_array($email,$emails_valid)){
//отправляешь письма...
}
Автор: zenia
Дата сообщения: 31.01.2006 09:43

Цитата:
РНР не будет посылать письма так:
$email="bob@bobo.ru";//введенное значение
$emails_valid=array("support@bobo.ru","webmaster@bobo.ru","hackme@bobo.ru");//имэйлы, на которые можно посылать письма
if(in_array($email,$emails_valid)){
//отправляешь письма...
}



Это я так понимаю это в скрипте нужно прописывать?

А если варианты, чтоб типа в php как-то настроить, чтоб не было таких проблем.
Просто сайты эти делали разные люди, вобщем они просто хостяться, так за всеми и не уследишь, когда они поставили форму отсылки.
Интересно как с этим боряться хостиноговые компании?
Автор: Brodyaga
Дата сообщения: 31.01.2006 10:15
Они просто накладывают ограничения для программы sendmail и исходящих коннектов к smtp серверам.
Например на агаве sendmail отправляет только 1 письмо, сколько бы запросов к нему не было в минуту.
Скажи им менять скрипты.
Автор: Church
Дата сообщения: 31.01.2006 11:19

Цитата:
Есть несколько сайтов, у них есть формы обратной связи.
Так вот эти формы ломают, рассылают спам.


Есть дырка при разработке таких форм, но мало, кто о ней знает/говорит.

Если в форму вводится e-mail отправителя и оно не проверяется, то можно сделать нечто такое:


Код:
<?php
$from="from@localhost.root\nBcc: for_spam1@localhost.root, for_spam2@localhost.root, for_spam2@localhost.root";

$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: '.$from. "\r\n";
$to='for_spam0@localhost.root';
$message='СПАМ';
$subject='СПАМ';
mail($to, $subject, $message, $headers);
?>
Автор: sket4
Дата сообщения: 31.01.2006 12:12
либо используй константу, и уже ей присваивай значения адресов, все просто.
Автор: Church
Дата сообщения: 31.01.2006 12:16

Цитата:
либо используй константу, и уже ей присваивай значения адресов, все просто.

Константе значения?
Автор: Brodyaga
Дата сообщения: 31.01.2006 13:52
Самое правильное решение это
e-mail'ы выбираются из списка выбора, дабы не доверять ввод данных юзеру
Так как велика вероятность ввода данных с постороннего сайта, проверять место прибытия формы.

Страницы: 1234567

Предыдущая тема: WAP+PHP и русские буквы


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.