Приемы безопасного программирования веб-приложений

confguru

ExAdmin
Команда форума
Приемы безопасного программирования веб-приложений

Здесь предлагается обсудить

"Приемы безопасного программирования веб-приложений на PHP."
http://phpclub.unet.ru/index.php3?m=tutor&g=Security
 

tony2001

TeaM PHPClub
Да. Статья очень нужная.

Учитывая, что РНР все больше используется для бизнес-приложений было бы ОЧЕНЬ ИНТЕРЕСНО узнать какие методы криптования можно прикрутить к РНР и как. Может расскажете?

Буду ждать с нетерпением....
 

f1

formula 1
Очень хорошая статья

только у профи, первый же пример, написан с ошибками,
наверно имелось ввиду

$referer=getenv("HTTP_REFERER");
if (!ereg("http://www.myserver.com",$referer)) {
echo "hacker? he-he...\n";
exit;
}
 

val_basket

Guest
Личный firewall.

Интересно, что первый пример из статьи, который действительно, как сказано ниже, правильно писать:

$referer=getenv("HTTP_REFERER");
if (!ereg("http://www.myserver.com",$referer)) {
echo "hacker? he-he...\n";
exit;
}

при обращении - меня опознал как хакера, хотя все было сделано корректно. Дело в том, что у меня стоит личный Firewall под названием Atguard, который не отдает серверу заголовок HTTP_REFERER. Соотвественно нет совпадения с именем сервера и меня заносят в хакеры :(

Валерий
 

Ramzes

Новичок
Покажи плз. типичного юзера у которого на машине стои свой личный firewall ;-)
 

val_basket

Guest
Личный firewall.

Дело в том, что программ Atguard достаточно распространенная, она контролирует весь входящий и выходящий трафик, режет баннеры и т.д. В настоящее время ее купила Symantic и теперь она называется Norton Internet Security, поэтому будет еще более распостраненная и это необходимо учитывать.
 

leosha

Старожил PHPCLub
Вот такая мысль не до конца оформленная.. Идея крутится, пытаюсь реализовать, но делают ли так я не знаю. Может я ошибаюсь? Подскажите...

К передаваемым из скрипта в скрипт данным каким-то образом применять функцию.. (блин, это как называется то) Вообщем, которая по известному (мне) алгоритму их шифрует (или просто как-то преобразовывает). А в скрипте который принимает данные проводим обратное действие... Не прокатит такая схема? Надежность повысится на порядок, попробуйка отгадай как я там делаю преобразование.. Никак не могу понять что делать, если придет просто бессмысленный набор символов. Т.е. это не мой скрипт их преобразовал, а кто-то сует что-то левое совсем. Вернее, как распознать что пришел набор символов, а не результат работы моего скрипта =)
поделитесь мыслями умными на этот счет...
 

leosha

Старожил PHPCLub
да, пожалуй.. убил ночь на копание этого вопроса и понял - сделать так чтоб это не ломалось за полчаса (специалистом) - нереально...
Хотя, можно к примеру привлечь PGP к этому, но уж слишком накладные расходы велики.. =)
 

leosha

Старожил PHPCLub
Надо немного более внимательно почитать статью и выяснить что такое HTTP_REFERER.
Если у тебя есть файл test.php c кодом <? phpinfo(); ?> и ты его вызовешь
как http://server/test.php то, разумеется, никакой HTTP_REFERER у тебя не будет.
А вот сделай еще один файл вида
<html>
<a href="test.php"> ССЫЛКА </a>
</html>
и посмотри что получится...
 

ant

Guest
Приемы безопасного программирования веб-прилож

ну думаю всем извесно о понитии "Подпись" в криптографии
думаю это тебе поможет в твоей проблеме ...
просто напросто создай функции
encrypt ()
setlabel ()
decrypt ()
checklabl()

подробнее информацию об этой методике можно найти практиэески на любоом сайте по криптографии ....
а для более изашрености можно переодически ключ подписи менять скажем раз в день ...
 

ant

Guest
ну думаю всем извесно о понитии "Подпись" в криптографии
думаю это тебе поможет в твоей проблеме ...
просто напросто создай функции
encrypt ()
setlabel ()
decrypt ()
checklabl()

подробнее информацию об этой методике можно найти практиэески на любоом сайте по криптографии ....
а для более изашрености можно переодически ключ подписи менять скажем раз в день ...
 

mirvana

Guest
Но ведь можно предусмотреть в интерфейсе кнопку "Выход", при нажатии на которую отвечающие за текушую сессию куки будут стираться. При заходе очередного пользователя с того же компьютера создаются новые куки и соотв. открывается новая сессия. Не вижу проблемы.
 

alex

Guest
Ага, разбежались, кнопка "выход" ....
Так юзер же для выхода просто закроет окно браузера, чихать он хотел на все эти кнопки ......
 

mirvana

Guest
Так при закрытии броузера кука должна стереться. Это все равно, что нажать "Выход"
 

alex

Guest
уточняю: При закрытии _последней_ копии браузера
а они плодятся как кролики
 

alex

Guest
уточняю: При закрытии _последней_ копии браузера
а они плодятся как кролики
 

leosha

Старожил PHPCLub
Ну.. что делать.. Поставить PHP как модуль.. =)
Под Win2000 (и под NT) это прокатывает.. А вот под 98 - никак..
 

leosha

Старожил PHPCLub
Никаких ошибок

имеется в виду не знак ^ , а то что в выражении
if (!ereg("^http://www.myserver.com")) {
пропущена строка, в которой ищем совпадение.. Вам несколько человек сказали, а в статье это до сих пор не исправлено.
 

caliabris

Guest
Приемы безопасного программирования веб-прилож

Что значит "под win98 никак"?
У меня php 4.0.3pl1 прикручен как модуль для Apache 1.3.14 под Windows98.
И header() работает...
Если интересно можешь посмотреть www.opensa.org или www.php4win.de

leosha писал(а):
-------------------------------
Ну.. что делать.. Поставить PHP как модуль.. =)
Под Win2000 (и под NT) это прокатывает.. А вот под 98 - никак..
 
Сверху