Библиотека Рефераты Курсовые Дипломы Поиск
Библиотека Рефераты Курсовые Дипломы Поиск
сделать стартовой добавить в избранное
Кефирный гриб на сайте www.za4et.net.ru

Компьютеры, Программирование Компьютеры, Программирование     Программное обеспечение Программное обеспечение

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

Ручка "Помада".
Шариковая ручка в виде тюбика помады. Расцветка корпуса в ассортименте, без возможности выбора!
25 руб
Раздел: Оригинальные ручки
Фонарь желаний бумажный, оранжевый.
В комплекте: фонарик, горелка. Оформление упаковки - 100% полностью на русском языке. Форма купола "перевёрнутая груша" как у
87 руб
Раздел: Небесные фонарики
Наклейки для поощрения "Смайлики 2".
Набор для поощрения на самоклеящейся бумаге. Формат 95х160 мм.
19 руб
Раздел: Наклейки для оценивания, поощрения

Данная статья не претендует на роль всеобъемлющего руководства на тему "как сделать так, чтоб меня никто не поломал". Так не бывает. Единственная цель этой статьи - показать некоторые используемые мной приемы для защиты веб- приложений типа WWW-чатов, гостевых книг, веб-форумов и других приложений подобного рода. Итак, давайте рассмотрим некоторые приемы программирования на примере некоей гостевой книги, написанной на PHP. Первой заповедью веб-программиста, желающего написать более-менее защищенное веб-приложение, должно стать "Никогда не верь данным, присылаемым тебе пользователем". Пользователи - это по определению такие злобные хакеры, которые только и ищут момента, как бы напихать в формы ввода всякую дрянь типа PHP, JavaScrip , SSI, вызовов своих жутко хакерских скриптов и тому подобных ужасных вещей. Поэтому первое, что необходимо сделать - это жесточайшим образом отфильтровать все данные, присланные пользователем. Допустим, у нас в гостевой книге существует 3 формы ввода: имя пользователя, его e-mail и само по себе тело сообщения. Прежде всего, ограничим количество данных, передаваемых из форм ввода чем-нибудь вроде: &l ;i pu ype= ex ame=user ame maxle g h=20> На роль настоящей защиты, конечно, это претендовать не может - единственное назначение этого элемента - ограничить пользователя от случайного ввода имени длиннее 20-ти символов. А для того, чтобы у пользователя не возникло искушения скачать документ с формами ввода и подправить параметр maxle g h, установим где-нибудь в самом начале скрипта, обрабатывающего данные, проверку переменной окружения web-сервера H P-REFERER: &l ;? $referer=ge e v("H P REFERER"); if (!ereg("^ { echo "hacker? he-he. "; exi ; } ?> Теперь, если данные переданы не из форм документа, находящегося на сервере www.myserver.com, хацкеру будет выдано деморализующее сообщение. На самом деле, и это тоже не может служить 100%-ой гарантией того, что данные ДЕЙСТВИТЕЛЬНО переданы из нашего документа. В конце концов, переменная H P REFERER формируется браузером, и никто не может помешать хакеру подправить код браузера, или просто зайти телнетом на 80-ый порт и сформировать свой запрос. Так что подобная защита годится только от Ну Совсем Необразованных хакеров. Впрочем, по моим наблюдениям, около 80% процентов злоумышленников на этом этапе останавливаются и дальше не лезут - то ли IQ не позволяет, то ли просто лень. Лично я попросту вынес этот фрагмент кода в отдельный файл, и вызываю его отовсюду, откуда это возможно. Времени на обращение к переменной уходит немного - а береженого Бог бережет. Следующим этапом станет пресловутая жесткая фильтрация переданных данных. Прежде всего, не будем доверять переменной maxle g h в формах ввода и ручками порежем строку: $user ame=subs r($user ame,0,20); Не дадим пользователю использовать пустое поле имени - просто так, чтобы не давать писать анонимные сообщения: if (emp y($user ame)) { echo "i valid user ame"; exi ; } Запретим пользователю использовать в своем имени любые символы, кроме букв русского и латинского алфавита, знака " " (подчерк), пробела и цифр: if (preg ma ch("//",$user ame)) { echo "i valid user ame"; exi ; } Я предпочитаю везде, где нужно что-нибудь более сложное, чем проверить наличие паттерна в строке или поменять один паттерн на другой, использовать Перл-совместимые регулярные выражения (Perl-compa ible Regular Expressio s).

То же самое можно делать и используя стандартные PHP-шные ereg() и eregi(). Я не буду приводить здесь эти примеры - это достаточно подробно описано в мануале. Для поля ввода адреса e-mail добавим в список разрешенных символов знаки "@" и ".", иначе пользователь не сможет корректно ввести адрес. Зато уберем русские буквы и пробел: if (preg ma ch("//",$usermail)) { echo "i valid mail"; exi ; } Поле ввода текста мы не будем подвергать таким жестким репрессиям - перебирать все знаки препинания, которые можно использовать, попросту лень, поэтому ограничимся использованием функций l2br() и h mlspecialchars() - это не даст врагу понатыкать в текст сообщения h ml-тегов. Некоторые разработчики, наверное, скажут: "а мы все-таки очень хотим, чтобы пользователи могли вставлять теги". Если сильно неймется - можно сделать некие тегозаменители, типа "текст, окруженный звездочками, будет высвечен bold'ом.". Но никогда не следует разрешать пользователям использование тегов, подразумевающих подключение внешних ресурсов - от тривиального &l ;img> до супернавороченного &l ;bgsou d>. Как-то раз меня попросили потестировать h ml-чат. Первым же замеченным мной багом было именно разрешение вставки картинок. Учитывая еще пару особенностей строения чата, через несколько минут у меня был файл, в котором аккуратно были перечислены IP-адреса, имена и пароли всех присутствовавших в этот момент на чате пользователей. Как? Да очень просто - чату был послан тег &l ;img src= в результате чего браузеры всех пользователей, присутствовавших в тот момент на чате, вызвали скрипт myscrip .pl с хоста myserver.com. (там не было людей, сидевших под ly x'ом :-) ). А скрипт, перед тем как выдать loca io на картинку, свалил мне в лог-файл половину переменных окружения - в частности QUERY S RI G, REMO E ADDR и других. Для каждого пользователя. С вышеупомянутым результатом. Посему мое мнение - да, разрешить вставку h ml-тегов в чатах, форумах и гостевых книгах - это красиво, но игра не стоит свеч - вряд ли пользователи пойдут к Вам на книгу или в чат, зная, что их IP может стать известным первому встречному хакеру. Да и не только IP - возможности javascrip 'a я перечислять не буду :-) Для примитивной гостевой книги перечисленных средств хватит, чтобы сделать ее более-менее сложной для взлома. Однако для удобства, книги обычно содержат некоторые возможности для модерирования - как минимум, возможность удаления сообщений. Разрешенную, естественно, узкому (или не очень) кругу лиц. Посмотрим, что можно сделать здесь. Допустим, вся система модерирования книги также состоит из двух частей - страницы со списком сообщений, где можно отмечать подлежащие удалению сообщения, и непосредственно скрипта, удаляющего сообщения. Назовем их соответственно admi 1.php и admi 2.php. Простейший и надежнейший способ аутентикации пользователя - размещение скриптов в директории, защищенной файлом .h access. Для преодоления такой защиты нужно уже не приложение ломать, а web-сервер. Что несколько сложнее и уж, во всяком случае, не укладывается в рамки темы этой статьи. Однако не всегда этот способ пригоден к употреблению - иногда бывает надо проводить авторизацию средствами самого приложения.

Первый, самый простой способ - авторизация средствами H P - через код 401. При виде такого кода возврата, любой нормальный браузер высветит окошко авторизации и попросит ввести логин и пароль. А в дальнейшем браузер при получении кода 401 будет пытаться подсунуть web-серверу текущие для данного realm'а логин и пароль, и только в случае неудачи потребует повторной авторизации. Пример кода для вывода требования на такую авторизацию есть во всех хрестоматиях и мануалах: if (!isse ($PHP AU H USER)) { Header("WWW-Au he ica e: Basic realm="My Realm""); Header("H P/1.0 401 U au horized"); exi ; } Разместим этот кусочек кода в начале скрипта admi 1.php. После его выполнения, у нас будут две установленные переменные $PHP AU H USER и PHP AU H PW, в которых соответственно будут лежать имя и пароль, введенные пользователем. Их можно, к примеру, проверить по SQL-базе: Внимание!!! В приведенном ниже фрагменте кода сознательно допущена серьезная ошибка в безопасности. Попытайтесь найти ее самостоятельно. $sql s a eme ="selec password from peoples where ame='$PHP AU H USER'"; $resul = mysql($db ame, $sql s a eme ); $rpassword = mysql resul ($resul ,0,'password'); $sql s a eme = "selec password('$PHP AU H PW')"; $resul = mysql($db ame, $sql s a eme ); $password = mysql resul ($resul ,0); if ($password != $rpassword) { Header("H P/1.0 401 Au h Required"); Header("WWW-au he ica e: basic realm="My Realm""); exi ; } Упомянутая ошибка, между прочим, очень распространена среди начинающих и невнимательных программистов. Когда-то я сам поймался на эту удочку - по счастью, особого вреда это не принесло, не считая оставленных хакером в новостной ленте нескольких нецензурных фраз. Итак, раскрываю секрет: допустим, хакер вводит заведомо несуществующее имя пользователя и пустой пароль. При этом в результате выборки из базы переменная $rpassword принимает пустое значение. А алгоритм шифрования паролей при помощи функции СУБД MySQL Password(), так же, впрочем, как и стандартный алгоритм U ix, при попытке шифрования пустого пароля возвращает пустое значение. В итоге - $password == $rpassword, условие выполняется и взломщик получает доступ к защищенной части приложения. Лечится это либо запрещением пустых паролей, либо, на мой взгляд, более правильный путь - вставкой следующего фрагмента кода: if (mysql umrows($resul ) != 1) { Header("H P/1.0 401 Au h Required"); Header("WWW-au he ica e: basic realm="My Realm""); exi ; } То есть - проверкой наличия одного и только одного пользователя в базе. Ни больше, ни меньше. Точно такую же проверку на авторизацию стоит встроить и в скрипт admi 2.php. По идее, если пользователь хороший человек - то он приходит к admi 2.php через admi 1.php, а значит, уже является авторизованным и никаких повторных вопросов ему не будет - браузер втихомолку передаст пароль. Если же нет - ну, тогда и поругаться не грех. Скажем, вывести ту же фразу "hacker? he-he.". К сожалению, не всегда удается воспользоваться алгоритмом авторизации через код 401 и приходится выполнять ее только средствами приложения. В общем случае модель такой авторизации будет следующей: Пользователь один раз авторизуется при помощи веб-формы и скрипта, который проверяет правильность имени и пароля.

Очередной раз выходя в Интернет и привычно набирая в браузере дорогой сердцу адрес, мы убеждаемся снова и снова, что не так уж все и плохо: апокалипсис постоянно кто-то переносит, а мы живем в мире высоких технологий, и это не может не радовать. Интернет стал для многих из нас настолько привычным, что иногда кто-нибудь да и допустит мысль о его существовании со времени сотворения мира. Между тем за кажущейся простотой и удобством стоит четкая и отлаженная работа узлов Сети. Было бы наивно полагать, что все совершенно, особенно если речь идет о вещах, сосуществующих в столь динамичной среде. Просматривая горячие двадцатки SANS, предупреждения EEYE, горячий эксклюзив от SecurityLab, убеждаешься снова и снова: безопасность есть процесс, а не состояние. В рамках данного раздела мы поговорим с вами о безопасности веб-серверов, а точнее постараемся внести ясность и создать некое подобие современной классификации веб-угроз. Предпосылки к созданию подобной классификации очевидны. За последние несколько лет индустрия безопасности веб-приложений адаптировала немалое количество не совсем точных терминов, описывающих уязвимости

1. Разработка веб-приложения для информационного обеспечения учебного процесса (видеокасты)

2. Приемы обращения с лабораторным оборудованием и основы техники безопасности при работе в химическом кабинете

3. Язык html: системы программирования html, особенности языка и реализация системы. Назначение, примеры программирования приложений

4. Приемы программирования на JavaScript

5. Расчёт статистических и вероятностных показателей безопасности полётов

6. Меры безопасности при стрельбе из стрелкового оружия и обращении с боеприпасами
7. Безопасность жизнедеятельности
8. Организационно-технические вопросы обучения по темам безопасной эксплуатации радиационно-опасных объектов

9. Безопасность жизнедеятельности (конспект лекций)

10. Демографический взрыв и безопасность жизнедеятельности

11. Экономика Аргентины (перевод англоязычной статьи с приложениями)

12. Обеспечение национальной безопасности РК в контексте интеграционных связей стран СНГ (с 1991-2001г.г.)

13. Эволюция системы европейской безопасности от СБСЕ к ОБСЕ

14. Безопасность жизнедеятельности

15. Региональные проблемы экологической безопасности на полуострове Ямал

16. Разделительные знаки при приложении

Чехол с поролоном для гладильной доски, бязь, 129x51 см.
Чехол для гладильной доски Ника Ч1 выполнен из высококачественной хлопчатобумажной ткани (бязь)с поролоновой прокладкой. Он имеет
313 руб
Раздел: Чехлы для гладильной доски
Дождевик Bambola для колясок, маленький.
Тент защитный (дождевик) с окном на липучке, на детскую коляску - "трость". Состав: пленка ПВХ. Размер: 70х65х35 см.
354 руб
Раздел: Дождевики, чехлы для колясок
Стержень для шариковых ручек "Quink Flow", синий, толщина линии M.
Стержень для шариковых ручек. Цвет чернил: синий. Толщина линии письма: M.
343 руб
Раздел: Стержни для ручек

17. Оружие массового поражения: фактор национальной безопасности или средство устрашения (На примере отношений США и России в ХХ веке)

18. Безопасность информационных технологий

19. Информационные технологии в экономике. Информационная безопасность в сетях ЭВМ

20. Анализ системы безопасности Microsoft Windows 2000 Advanced Server и стратегий ее использования

21. Периферийное устройство ПЭВМ, Характеристика этапов подготовки и решения задач на ПЭВМ в любой системе программирования. Электронная почта, особенности применения

22. Языки и технология программирования. Начальный курс /Pascal/
23. Задачи графических преобразований в приложениях моделирования с использованием ЭВМ
24. Программирование на С

25. Программирование - интерфейс RS-232

26. Разработка приложений в рамках COM

27. Применение методов линейного программирования в военном деле. Симплекс-метод

28. Аналитический обзор книги "Программирование на языке ассемблера..."

29. Математические методы и языки программирования: симплекс метод

30. Ответы на вопросы по курсу "Системное программирование" (Шпаргалка)

31. Разработка базы данных `ДЕКАНАТ` в среде программирования "Delphi"

32. Программирование на "СИ" (ТХТ, СИ)

Кулинарный набор "Mayer & Boch", 17 предметов.
Кондитерский мешок с 16-ю насадками идеально подходит для хозяек, увлекающихся кулинарным искусством. С помощью насадок, имеющих различное
377 руб
Раздел: Кондитерские принадлежности
Экспресс-скульптор "Эврика", большой.
Настоящее искусство в Ваших руках! Экспресс-скульптор - это не только стимулятор творческих способностей, но и точечный
943 руб
Раздел: Антистрессы
Коврик для ванной "Kamalak Tekstil", 60x100 см (коричневый).
Ковры-паласы выполнены из полипропилена. Ковры обладают хорошими показателями теплостойкости и шумоизоляции. Являются гипоаллергенными. За
562 руб
Раздел: Коврики

33. 10 задач с решениями программированием на Паскале

34. Программирование и алгоритмические языки

35. Использование макросов для программирования в MS ACCESS

36. Обучающая программа "Графика" программированию в графическом режиме на языке turbo-pascal 7.x

37. Язык программирования Паскаль и ветвление

38. Сравнительный анализ языков программирования JavaScript и VBScript
39. Программирование на Object Pascal в среде Delphi
40. Общая терминология программирования

41. Интеграция Word с приложениями и объектами

42. Разработка тестового приложения "Компоненты меню Delphi"

43. Программирование логической игры на visual basic

44. Учебник по программированию в среде С++ Builder

45. Учебник по PHP 4

46. Учебник по технологии программирования

47. Билеты по дисциплине "Основы алгоритмизации и программированию"

48. Основные принципы просесса инсталляции приложений в ОС Windows

Игровой набор "Строим дом".
Игровой набор "Строим дом" из серии "Детский сад" от компании ПК "Форма" состоит из домика и строительного
646 руб
Раздел: Наборы строительной техники
Наполнитель бумажный (50 грамм), натуральный.
Вес: 50 грамм. Бумажный наполнитель используют в качестве декоративного материала, создавая из него на поверхности подарков различные
448 руб
Раздел: Упаковочные ленты, банты
Каска с подставкой под банки.
Не дай себе засохнуть! На стадионе или в парке, на дискотеке или вечеринке, в жаркий полдень или среди ночи, если с Вами пивная каска,
524 руб
Раздел: Прочее

49. Эволюция языков программирования

50. Отчет по практическим занятиям по курсу прикладные задачи программирования на тему Windows, Microsoft Word и Microsoft Excel

51. Руководство по программированию на HTML

52. Использование гиперссылок при создании Веб-страницы

53. Лабораторная работа №5 по "Основам теории систем" (Транспортные задачи линейного программирования)

54. Лабораторная работа №3 по "Основам теории систем" (Теория двойственности в задачах линейного программирования)
55. Интеграл по комплексной переменной. Операционное исчисление и некоторые его приложения
56. Методы и приемы решения задач

57. Постановка задачи линейного программирования и двойственная задача линейного программирования.

58. Некоторые подходы к задачам распознавания и их приложениям

59. Теория неявных функций и ее приложения

60. Программированное обучение и контроль по физиологии

61. Инфекционная безопасность пациента и медработников. Инфекционный контроль

62. Федеральная Служба Безопасности

63. Компьютерная преступность и компьютерная безопасность

64. Производственная Экологическая Безопасность (ПЭБ)

Пленка воздушно-пузырчатая 2-х слойная, плотность 75 г/кв.м.
Универсальный упаковочный материал. Препятствует повреждению товаров при ударе, предотвращает проникновение влаги и пыли, защищает от
423 руб
Раздел: Фольга
Копилка-сейф пластиковая большая, красная.
Высокое качество изготовления, пластик. Сейф-копилка - игрушка электронная для монет и купюр с автоматическим затягиванием купюр
1679 руб
Раздел: Копилки
Нож-скальпель, 2 запасных лезвия.
Нож канцелярский (скальпель) предназначен для аккуратной и точной работы по бумаге. Резиновый грип препятствует скольжению
349 руб
Раздел: Ножи, ножницы, резаки

65. Вопросы лазерной безопасности

66. Приемы обучения непроверяемым написанием на уроках русского языка

67. Методические приемы развития воображения и творческих способностей детей младшего школьного возраста на занятиях кружка декоративно - прикладного искусства по художественной обработке бересты

68. США, Франция и европейская безопасность

69. Ответы на билеты к гос. экзамену по специальности "Безопасность технологических процессов и производств"

70. Техника безопасности на участке
71. Безопасность движения
72. Приемы общения

73. Лазерная безопасность

74. Безопасность труда электромонтера по обслуживанию электрооборудования

75. Структура и программирование ПЛИС фирмы Altera в САПР Quartus II, её применение в лабораторном стенде

76. Безопасность моего жилища

77. Разделительные знаки при приложении

78. Агрономические приемы улучшения почв

79. Обоснование выбора пестицидов для борьбы с вредными объектами и разработка технологии их эффективного и безопасного применения

80. Вопросы для программированного контроля по курсу "Механика"

Измеритель любви.
Измеритель любви - это чувствительный прибор, отмечающий малейшие изменения в вашем внутреннем состоянии. Нижнюю капсулу нужно зажать в
315 руб
Раздел: Прочее
Вкладыши "Лето".
Вкладыши "Лето" - это развивающая игрушка, предназначенная для детей в возрасте старше 3-х лет. При помощи такой игрушки ребёнок
503 руб
Раздел: Рамки-вкладыши
Конструктор металлический для уроков труда №2.
Конструктор раскрывает перед ребенком неограниченные возможности моделирования и создания множества своих собственных
397 руб
Раздел: Магнитные и металлические конструкторы

81. Безопасность потребления спиртных напитков

82. Возникновение и развитие целей и приемов аудита

83. Программирование и планирование в ситуациях коллективного взаимодействия

84. Технологические приемы деловой беседы

85. Технические приемы (АХД)

86. Риск в задачах линейного программирования
87. Методы экономического программирования
88. Проблемы экономической безопасности России в условиях перехода к рынку

89. Организация приема иностранных туристов в Байкальском регионе

90. Роль ВМФ в обеспечении национальной безопасности России

91. Россия и проблемы безопасности в балтийском регионе

92. Контртеррористическая стратегия и перестройка системы безопасности США

93. Отечественная войсковая приемо-передающая техника

94. Технологии программирования Web

95. М.И. Котик «Психология и безопасность»

96. Стилистические приемы оживления ораторской речи

Сетка москитная, 1х30 метров, в рулоне, белая.
Полиэстеровая мелкоячеистая сетка в рулоне. Предназначена для защиты помещения от насекомых. Свободно пропускает воздух, обеспечивая
1131 руб
Раздел: Сетки противомоскитные
Пелёнка-кокон "Карапуз" на липучке.
Пеленка-кокон для пеленания с удлиненными краями, оснащенными липучками. Дарит чувство комфорта и безопасности новорожденному малышу,
419 руб
Раздел: Пелёнки
Асборн - карточки. Готовимся к школе.
Набор из 50 двусторонних многоразовых карточек. Вас ждут задания для подготовки к школе, игры, головоломки, задачки на внимательность,
389 руб
Раздел: Внимание, память, логика

97. Особенности авторских приемов в сказках М. Е. Салтыкова-Щедрина "Премудрый пескарь" и "Дикий помещик"

98. Использование приема антитезы у Л.Н.Толстого и Ф.М.Достоевского

99. Стимулы успеха: как заключить выгодную сделку, используя психологические приемы


Поиск Рефератов на сайте za4eti.ru Вы студент, и у Вас нет времени на выполнение письменных работ (рефератов, курсовых и дипломов)? Мы сможем Вам в этом помочь. Возможно, Вам подойдет что-то из ПЕРЕЧНЯ ПРЕДМЕТОВ И ДИСЦИПЛИН, ПО КОТОРЫМ ВЫПОЛНЯЮТСЯ РЕФЕРАТЫ, КУРСОВЫЕ И ДИПЛОМНЫЕ РАБОТЫ. 
Вы можете поискать нужную Вам работу в КОЛЛЕКЦИИ ГОТОВЫХ РЕФЕРАТОВ, КУРСОВЫХ И ДИПЛОМНЫХ РАБОТ, выполненных преподавателями московских ВУЗов за период более чем 10-летней работы. Эти работы Вы можете бесплатно СКАЧАТЬ.