Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Клуб профессиональных программистов :: Выпуск #46




Здравствуйте, уважаемые читатели!



Сегодня в выпуске: интересные темы на форуме, новые файлы в архиве сайта, перевод книги "PHP Security Guide".

Интересные темы на форуме.

Общение :: Фото :: Железо

Nokia 6120, cam.

О съемке бумажных документов встроенной камерой мобильного телефона с целью последующего распознования.

Железо

Нужна помощ по новому компьютеру.

Есть небольшие сложности с запуском. Комп зависает буквально сразу после короткого писка на картинке, где изображена эмблема Biostar и надпись: нажмите delеte чтобы войти в настройки.

С/С++ :: WinAPI & Visual C++

Печать из диалогового окна (MFC).

Об особенностях печати, метриках, разрешении принтера и пр.

Асинхронное чтение с СОМ-порта

Работа с COM-портом в ассинхронном режиме с MFC и Win32 API.

C/С++ :: Borland C/C++

TMediaPlayer проблемы с воспроизведением.

Возникли проблемы с использованием компонента MediaPlayer. Нужно просто проиграть в окне программы видеофайл.

Drivers

Проблема с обнаружением операции копирования и перемещения файлов.

Есть такая задача: отследить копирование и перемещение файлов. Поставил заглушки на ntopenfile, ntcreatefile. Отслеживаю открытие и создание файлов с разными флагами, но связать операции не получается.

Начинающим

C: указатель на структуру.

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

Web :: Серверные скрипты

Checkbox : как отправить значения флажков созданных при помощи массива.

При помощи массива я создаю список предметов, под каждым из которых - флажок (чекбокс). Проблема заключается в том, что не знаю, что нужно прописать, чтобы при нажатии кнопки показывался список предметов, выбранных флажками.

Windows

COM - авторизация клиента.

На машинах клиентов стоят прокси-компоненты COM+ - реальзые компоненты запускаются на сервере. Клиентская машина пересылает данные о текущем залогиненом пользователе. Вопрос: как сделать так, чтобы запросы к серверным компонентам делались анонимно?

Win95

Имеется древний комп - 486 с 24МБ. Проблемы с установкой Windows95.

Unix и другие :: Linux

LVM2

Хотелось бы услышать об опыте использования, об удобстве, о проблемах, о плюсах и минусах.

Самоуправление

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

Тестирование свежего движка для форума - SMF 1.1.4 и разные моды.

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


Последние поступления

Perl

Программирование на Perl, 3-е издание.

Лучшая книга о Perl от автора языка - Ларри Уолла.

Программы

calc_delphi7

Простой калькулятор, написанный на Delphi 7.

Патч для BCB6 Enterprize - Update 4

Патч для Borland C++ Builder 6 Enterprize Edition. Update 4.

Патч для BCB6 - ilink32 5.66

Патч для Borland C++ Builder 6. Обновляет линкер ilink32 до версии 5.66.


Безопасноcть PHP.

Перевод книги "PHP Security Guide". Автор перевода на русский язык: Aveic.

Книга рекомендуется к прочтению новичками в PHP, но, возможно, и опытные неожиданно найдут в ней что-то для себя новое.

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

Публикуем здесь отрывки из перевода. Книгу в формате PDF можно скачать с нашего сайта в этом разделе каталога: PHP.

Оглавление книги.

  • Обзор
    • Что такое безопасность?
    • Базовые шаги
    • Register Globals
    • Проверка данных
      • Метод отсылки (dispatch method)
      • Метод включения (include method)
      • Примеры обработки данных
      • Соглашения об именовании
      • Синхронизация
    • Отчет об ошибках
  • Обработка форм
    • Подмена отправки данных с формы
    • Подмена HTTP запросов
    • Cross-Site Scripting
    • Межсайтовые подмены запроса (Cross-Site Request Forgeries)
  • Базы данных и SQL
    • Раскрытые права доступа
    • SQL-инъекция
  • Сессии
    • Фиксация сессии
    • Кража сессии
  • Совместно используемые хосты
    • Раскрытие данных сессии
    • Обзор файловой системы

Фрагменты глав.

Что такое безопасность?

Безопасность является метрикой, а не характеристикой.

К несчастью, многие программные проекты называют безопасность обычным требованием. Разве это безопасно?

Безопасность должна быть сбалансирована со стоимостью.

Довольно просто и относительно недорого предоставить достаточный уровень безопасности для большинства приложений. Однако, если вы хотите защитить очень ценную информацию, то требования к безопасности резко возрастают, и вам придется увеличить плату за требуемый уровень безопасности. Эта стоимость должна быть обязательно включена в бюджет проекта.

Безопасность должна быть сбалансирована с практичностью.

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

Безопасность должна быть частью дизайна приложения.

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

Подмена отправки данных с формы

Для того, чтобы понять необходимоть обработки данных, представте следующую форму, расположенную в http://example.org/form.html:

<form action="/process.php" method="POST">
  <select name="color">
    <option value="red">red</option>
    <option value="green">green</option>
    <option value="blue">blue</option>
  </select>
  <input type="submit" />
</form>

Представьте, что потенциальный нарушитель сохранит этот HTML-файл и модифицирует его следующим образом:

<form action="http://example.org/process.php" method="POST">
  <input type="text" name="color" />
  <input type="submit" />
</form>

Измененная форма может быть расположена где угодно (даже не нужен веб-сервер, необходимо только наличие браузера), и этой формой можно управлять по желанию. Абсолютный URL в аттрибуте action означает, что POST-запрос будет отправлен в то же место. Это позволяет легко устранять любые ограничения на стороне клиента, будь то ограничения HTML-формы или клиентский скрипт, предназначенный для проведения элементарной проверки данных. В этом примере значение $_POST['color'] не обязательно является red, green или blue. Итак, пользователь может легко создать форму, удобную для отправки любых данных скрипту, который обрабатывает эту форму.

SQL-инъекция

Против sql-инъекций очень легко защищаться, но большинство приложений до сих пор уязвимы к подобному роду атак. Представьте следующий SQL код:

<?php
$sql = "INSERT
 INTO users (reg_username,
  reg_password,
  reg_email)
 VALUES ('{$_POST['reg_username']}',
  '$reg_password',
  '{$_POST['reg_email']}')";
?>

Этот запрос использует напрямую $_POST, что уже должно казаться подозрительно.

...

Фиксация сессии

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

Наиболее значительной информацией для нарушителя является идентификатор сессии, т.к. он необходим для любой атаки заимствования прав. Существует три распостраненных метода раздобыть верный идентификатор сессии:

  • Предсказание
  • Захват
  • Фиксация

Предсказание означает отгадывание верного идентификатора. Механизм сессий в PHP гарантирует выдачу весьма непредсказуемых идентификаторов, поэтому это врятли является уязвимостью.

Захват верного идентификатора сессии - это наиболее распостраненный тип атаки, и существует множество подходов для совершения такой атаки. Т.к. идентификаторы сессии обычно передаются через cookies или через GET-переменные, то различные подходы фокусируются на атаке передачи данных. Раньше существовали некоторые уязвимости браузеров, касающиеся cookies (в основном у Internet Explorer). также надо иметь ввиду что GET-переменные менее защищены, чем cookies. Таким образом, для пользователей, разрешающих использование cookies, вы можете предоставить более безопасный механизм передачи идентификатора сессии через cookies.

Фиксация является самым простым методом получения верного идентификатора сессии. Несмотря на то, что против этого метода легко защититься, но если ваш механизм работы с сессиями состоит не более чем из session_start(), то вы уязвимы.

...


А теперь прощаемся с Вами до следующего выпуска.

                                        С уважением, команда Клуба.




В избранное