Статьи

Оценка приложений PHP

Исходя из этого , возможно, два наиболее распространенных вопроса, которые я видел, задают люди, когда дело доходит до оценки приложений PHP;

  • Это хорошо выглядит?
  • Это легко установить?

Сейчас не каждый является программистом или системным администратором — «нормальные люди» оценивают их высоко, потому что они напрямую связаны с двумя наиболее насущными проблемами, с которыми они сталкиваются: им нужен сайт, который является визуально привлекательным и, с ограниченными техническими знаниями, установкой может быть значительным препятствием для преодоления.

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

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

Как выглядит запись безопасности? Очевидное место, чтобы узнать это через Google с некоторыми поисками, такими как «appName exploit», «уязвимость appName», «безопасность appName». Чтобы получить лучшее впечатление, ищите списки рассылки Bugtraq .

Конечно, вы должны иметь в виду, что качество информации может варьироваться — просто найти случайное онлайн-мнение, что «appName rox / sux» недостаточно. Кроме того, новые или менее популярные приложения не привлекли бы достаточного внимания для формирования правильных мнений таким образом. И вы должны иметь в виду, что почти у каждого приложения, которое было вокруг и имеет реальных пользователей, будут проблемы в тот или иной момент, но если сравнить это с этим , то легко заметить разницу.

В качестве дополнительного примечания, я бы рекомендовал зарегистрироваться в этом списке рассылки — здесь будут объявлены практически все проблемы безопасности с хорошо известными (и менее известными) базами кода с открытым исходным кодом PHP.

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

Инструмент номер 1 здесь — это phpxref , который позволяет очень легко определить использование (или отсутствие) функций PHP — прогоните через него исходный код, который проверяет результаты. Например, вы можете искать использование evalдрузей ) — в общем, нет веской причины использовать eval, поэтому, если вы найдете его, спросите разработчиков, почему именно они его использовали. Вы также можете обнаружить отсутствие некоторых индикаторов функций — если приложение использует MySQL на бэкэнде, вы обнаружите какие-либо из mysql_escape_string , mysql_real_escape_string или addlashes для экранирования параметров в запросах SQL. Используются ли htmlspecialchars или htmlentities , чтобы избежать вывода? Есть ли какое-либо использование расширенных функций регулярных выражений PCRE или POSIX для таких вещей, как валидация?

В противном случае, как выглядит код для вас? Это очень субъективно и зависит от вашего опыта, но выглядит ли это «вменяемым»?

Как код управляется? Еще одна область для изучения — как на самом деле выполняется проект. Сколько людей вовлечены и активны ли они? Есть ли у них смысл делать политики выпуска / обновления — четкую нумерацию версий, хорошую документацию о том, как обновлять, используют ли они контроль версий, каковы их каналы связи и т. Д.?

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

Как пользователь приложения, вы должны знать, что вы действительно должны идти в ногу с новыми выпусками, особенно если они содержат исправления ошибок или безопасности. В качестве примера проекта, который делает хорошую работу здесь, ознакомьтесь с документацией по обновлению Serendipity . Вопрос, который вам нужно задать себе: «Могу ли я сделать это?». Вам также понадобится приложить усилия, чтобы оставаться в курсе — подпишитесь на соответствующий список рассылки / RSS-канал и т. Д., Чтобы узнать о новых выпусках.

Это масштабируется? Подробнее об обслуживании, как выглядит приложение после того, как вы некоторое время его используете и собрали большой объем данных и толпу активных пользователей? Может ли этот форум справиться с большим количеством постов и одновременных пользователей? Как эта вики обрабатывает большое количество документов? Является ли использование упакованного RSS-канала волонтером для атаки DOS ? Насколько легко сделать резервную копию / восстановить данные? Является ли общая учетная запись хоста только с FTP-доступом достаточной для поддержки этого приложения? Позволяет ли интерфейс администратора справляться с 20 000 зарегистрированных пользователей?

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

Кто это использует? То, что Mediawiki — это код википедии, очевидно, очень хороший показатель. Тем временем Зенд использует фудфорум . Я не предлагаю слепо следовать здесь, кстати — причины выбора могут не соответствовать ситуации (вы всегда можете спросить), но это служит полезным индикатором.

Вы также должны быть осторожны с «следованием за стадом». То, что его используют «все», не всегда означает, что это самый умный выбор. Также может быть определенное преимущество, если вы не будете использовать то же самое, что и все остальные — большие установленные базы создают атакующие цели.

У кого есть мнение? Есть много людей со знанием PHP, поэтому получить мнение не проблема. В то же время, стоит подумать, откуда исходит мнение и помнить, что это просто мнение. Иногда даже самые опытные не согласны . Таким образом, этот путь может быть как вводящим в заблуждение, так и полезным, но его нельзя игнорировать.

Во всяком случае — это с моей головы. Что-нибудь еще?