PHP - фреймворки, ORM, инкапсуляция - PullRequest
2 голосов
/ 24 апреля 2010

Языки программирования / среды в стороне, много ли разработчиков, которые используют каркас на PHP, ORM и все еще придерживаются инкапсуляции для DAL / BLL? Я управляю командой из нескольких разработчиков и обнаружил, что большинство фреймворков требуют от меня ежедневной проверки кода, потому что мои разработчики используют встроенный ORM.

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

Любые предложения, кроме получения новой команды и нового языка (я видел, что фреймворки Python / Ruby имеют те же проблемы).

Ответы [ 4 ]

3 голосов
/ 24 апреля 2010

Выбрасывать команду никогда не вариант: вместо этого улучшайте ее!

  • Организуйте семинары по безопасности, чтобы они больше знали об этих проблемах.
  • Введите (или даже лучше: попросите их ввести) руководящие указания по коду для лучшей обработки этих проблем ( венгерская нотация с учетом безопасности или использование подготовленных операторов два примера)
  • Устраните недостатки в обзорах кода - не обвиняйте их в игнорировании безопасности, просто покажите найденные проблемные фрагменты и объясните, что безопасность очень важна для [выберите один: этот проект / клиент / репутация вашей компании / Вы лично]
  • Пусть они проводят аудит безопасности самостоятельно или по коду сверстника. Пусть они узнают, как легко использовать такие недостатки безопасности.
  • Найдите другие инструменты / платформы, которые лучше поддерживают вашу модель безопасности. Но будьте осторожны: этот вариант стоит очень дорого! Ваши программисты должны будут поддерживать код в старой среде и изучать новую (в худшем случае: им нужно будет изучать новый язык вместе с новой платформой)

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

1 голос
/ 24 апреля 2010

Для меня это звучит так, будто вы хотите улучшить культуру кодирования. Взгляните на Правила экстремального программирования . Может быть, вы можете принять несколько методов.

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

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

Помните, что я не в команде.

0 голосов
/ 08 сентября 2014

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

Самый легкий фреймворк, который я когда-либо работал, это db.php (http://dbphp.net, https://github.com/hazardland/db.php).. Но это рациональный маппер объекта с первым кодом. Вам нужно будет определить классы, чем базы данных \ таблицы будут созданы в в ваши классы.

Посмотрите на метод \ db \ table :: load. Каждый класс имеет свой собственный экземпляр обработчика \ db \ table, расположенный в массиве database :: tables. Вы можете переопределить table :: load или создать отдельные обработчики для таблиц, производных от класса \ db \ table, и поместить их в базу данных :: tables.

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

Другой вариант - сделать саму рамку dal, чтобы 1 человек мог полностью функционировать и работать в течение 3-4 месяцев.

0 голосов
/ 24 апреля 2010

Могу ли я порекомендовать Нептали ? Это не ORM, но структура предназначена для обеспечения безопасности. И.Е. все переменные кодируются перед выводом на экран; если явно не определено не слишком.

Он также довольно тонкий, без ORM и т. Д., Поэтому вы можете подключить к нему любой ORM, какой захотите. Это довольно мило, на самом деле.

...