Я был нанят кем-то, чтобы сделать небольшую работу на сайте. Это сайт для большой компании. Он содержит очень конфиденциальные данные, поэтому безопасность очень важна. Проанализировав код, я заметил, что он заполнен дырами в безопасности - читай, много PHP-файлов, бросающих пользовательский ввод get / post непосредственно в запросы mysql и системные команды.
Проблема в том, что создатель сайта для него - программист с семьей и детьми, которые зависят от этой работы. Я не могу просто сказать: «Ваш сайт представляет собой сценарий детского парка развлечений. Позвольте мне переделать его для вас, и у вас все будет хорошо».
Что бы вы сделали в этой ситуации?
Обновить:
Я последовал несколько полезных советов и вежливо сообщил разработчику, что обнаружил некоторые возможные недостатки безопасности на сайте. Я указал на строку и сказал, что там может быть возможная уязвимость для атак с использованием SQL-инъекций, и спросил, знает ли он об этом. Он ответил: «Конечно, но я думаю, что для его использования у злоумышленника должна быть информация о структуре базы данных; я должен лучше понять» .
Обновление 2:
Я сказал, что это не всегда так, и предложил ему перейти по этой ссылке на вопрос переполнения стека, чтобы правильно с ней справиться: как предотвратить SQL-инъекцию в PHP? Он сказал, что изучит это, и поблагодарил меня за то, что я сказал ему раньше. Полагаю, моя часть готова, спасибо, ребята.
источник
Ответы:
Прежде всего, здесь приоритет заключается в том, чтобы закрыть дыры в безопасности.
Если вы работаете непосредственно с инженером, который написал это, запишите все и отдайте его этому инженеру.
Если нет, скажите вашему работодателю, что проблемы безопасности больше, чем первоначально предполагалось, и что сайт требует много работы. Попросите работать с основным разработчиком, который находится на сайте, и предложите рассказать им о безопасности PHP (не обещайте сделать человека экспертом, но предложите обучить его всему, что вы знаете), чтобы этот человек мог его освоить. после того, как вы закончите.
Не делайте этот вопрос «этот парень плохой, уволите его». Подходя к этому с точки зрения «Эй, я обнаружил некоторые потенциальные ошибки, которые требуют исправления статистики, которые, похоже, происходят из-за некоторых неосведомлённых / распространенных заблуждений относительно безопасности сайта. Я также хотел бы поговорить с вашей разработкой, чтобы мы могли улучшить ваш сайт» и, надеюсь, избежать большего количества этих проблем в будущем ».
источник
Есть разница между невежеством и некомпетентностью. Было время, когда вы тоже не знали, что такое SQL-инъекция, и нет никаких оснований полагать, что оригинальный программист не способен исправлять проблемы, как только он их узнает.
Так скажи им. Будьте конкретны и объективны, и будьте готовы ответить на вопросы, привести примеры эксплойтов и рекомендации по исправлению. Если они все еще не получат его после этого, самое большее, что вы действительно можете сделать, - это не размещать какую-либо вашу личную информацию на сайте.
источник
Ваша задача не переделать сайт для него. Это исправить маленькую ошибку. Однако, если вы заметили проблемы с безопасностью, которые необходимо исправить, вы можете сообщить об этом владельцу сайта и дать представление о том, в чем может быть проблема.
Не ругайте и не говорите отрицательно о первоначальном разработчике и не комментируйте, насколько ужасен код. Будьте уважительны и профессиональны. Вы можете предложить поработать с разработчиком для решения проблем. Не пытайтесь исправить это самостоятельно или предложить решение, если вы не заключили контракт на решение проблемы. Если они последуют вашему совету и вы ошибаетесь, они могут вернуться к вам.
источник
Прежде всего - починить то, за что вас наняли. Если вы этого не сделаете, вы будете восприниматься как тип консультанта, который заинтересован в том, чтобы сделать больше работы для себя, а не выполнять работу.
Наряду с исправлениями, вам нужно дать им список того, что вы заметили, что это неправильно с точки зрения безопасности, и почему это неправильно.
источник
Никому не поможет не сообщать о проблемах. Если у вас было определенное задание, вас наняли для его выполнения, но документируйте другие проблемы безопасности, как вы их видите, и сообщайте о них соответствующему лицу, вероятно, человеку, которому вы сообщаете для задания, для которого вы были наняты.
Это ситуация, когда сильные мягкие навыки пригодятся, так как для тактичного решения этого вопроса потребуется не откладывать работу, проделанную другими на сайте, и не заставлять разработчика чувствовать, что вы сомневаетесь в его таланте.
Очевидно, избегайте таких слов, как «дерьмо, плохо, плохо, загадочно», когда ссылаетесь на код / недостатки и подобные слова для разработчика, написавшего сайт.
источник
В дополнение к другим ответам вы можете указать разработчикам на некоторые ресурсы, как легко можно использовать проблемы внедрения SQL-кода, например, sqlmap, который является автоматизированным инструментом эксплуатации SQL-инъекции.
То, что я нашел эффективным в демонстрации серьезности такого рода проблем в прошлом, показывает, что можно с этим сделать, так что если вы запустите что-то подобное против разработчика. копия сайта, чтобы показать его извлечения данных и т. д. вы можете убедить их в серьезности.
источник
Первый и единственный; Руководство не хочет слышать о проблемах. Меня уволили из Управления кадров (проверки безопасности для Белого дома), потому что я указал, насколько небезопасна их система. Это было некоторое время назад, но отношение руководства не изменилось.
Решите проблему с разработчиком по электронной почте, чтобы у вас был след, а затем уходите или убегайте. Когда у них, в конце концов, возникает проблема, как подрядчик, они будут пытаться обвинить вас, независимо от какого-либо участия, даже удаленно связанного с проблемой.
Наличие такой фундаментальной проблемы, как внедрение SQL, указывает на то, что они были дешевы при первоначальной разработке системы, и, скорее всего, сейчас они в лучшем случае дешевы. Получите от них то, что можете, пока они еще в бизнесе, но ищите развитие бизнеса в другом месте.
источник