#php #mysql #security
#php #mysql #Безопасность
Вопрос:
я начал немного изучать mysql, и пока я читал, я думал, что уязвимости безопасности в mysql довольно огромны и не могут быть хорошо освещены, если кто-то действительно не понимает почти все о mysql.
если у меня есть веб-сайт, на котором будет храниться не очень большой объем информации, было бы плохо хранить ее в файлах .php?
каковы последствия и уязвимости этого?
мне кажется, что риск намного меньше, потому что, если в файле .php нет инструкции echo, если вы попытаетесь получить к нему доступ, все, что вы получите, это пустая страница, и если вы не можете «отправить код» с помощью пользовательского ввода и отправить файлы на веб-сайт, он должен быть безопаснымчто касается веб-сайта (очевидно, что если сам сервер взломан, злоумышленник в значительной степени контролирует все, но это не главное в этом вопросе)
обновление вопроса.
похоже, что то, что я написал выше, не дает тех ответов, которые я ожидаю, и поэтому я постараюсь упростить.
здесь я ищу, почему базы данных более безопасны, чем плоские файлы без предвзятости, потому что большинство людей, о которых я читал по этому вопросу, просто скажут, что базы данных более безопасны, но не могут сказать почему. да, они быстрее, и с ними легче манипулировать данными, особенно если они сложные или с несколькими пользователями, и в них много информации. об этом, и легко понять, почему.
дело в том, что, когда я начал читать о mysql несколько дней назад, я увидел, что если ваш php скомпрометирован, скорее всего, скомпрометированы и базы данных, поэтому написание хорошего безопасного php-кода, вероятно, является первой и наиболее важной линией защиты ваших баз данных mysql.
если ваш php бескомпромиссен, то и информация, которую вы храните в файлах php, так что, если вы пишете хороший безопасный php, безопасность простых файлов php будет хорошей.
наличие баз данных также заставляет вас использовать функции php, которые обычно вы бы не использовали, и некоторые из них имеют реальные дыры в безопасности, которые необходимо «залатать», поэтому написать хороший безопасный php-код для работы с базами данных сложнее, чем написать одинаково безопасный код для работы с обычными файлами.
кроме того, когда у вас установлен apache / php / mysql, у вас есть 3 вещи, которые могут иметь точки входа для хакеров, если они неправильно настроены и поддерживаются, если вы отключите mysql, у вас будет только 2, вам не придется беспокоиться о внедрении sql, например, потому что без баз данных это невозможновы можете вводить любой sql, который хотите, но вы ничего не получите.
итак, для управления небольшими объемами данных простые файлы кажутся мне безопасными, немного сложнее работать с данными, медленнее, но не актуально, учитывая, что речь идет о небольшом объеме данных.
почему эти выводы могут быть неверными, — это информация, которую я ищу в этом.
Комментарии:
1. Почему хранение имеет значение? Важно то, что вы делаете с сохраненными данными. Сохранение чего-либо в PHP-файл, который удаляет файл на сервере, — это рецепт для стрельбы по собственной ноге.
2. @Furicane это не имело значения и не имеет ничего общего с вопросом. и я говорю о хранении информации, а не о «командах для удаления материала в действительном коде php»
3. Итак, вы говорите, что хранение некоторых данных в mysql является большей дырой в безопасности, чем хранение данных в файле PHP, потому что, если нет
echo
инструкции, ничего не произойдет? Я только что сказал вам, что это возможно, потому что файлы php являются исполняемыми. Теоретически, кто-то может хранить в этом файле что угодно, включая вредоносный код. Если кто-то сохранил это в mysql, единственная проблема заключается в том, как вы извлекаете эти данные и что вы с ними делаете. Кроме того, команды PHP не оцениваются после извлечения из mysql, если вы храните эти данные в файле php, они являются исполняемыми. Без дополнительной информации я сомневаюсь, что какая-либо дальнейшая помощь возможна.4. @Furicane я знаю, что файлы php являются исполняемыми. вы говорите, что в гипотетической ситуации, которую я создал, кто-то может что-то хранить в этом файле, мой вопрос в том, как они могут хранить / изменять / видеть что-то из этого файла в данной ситуации? также я не сказал, что ничего не произойдет без инструкции echo, я сказал, что вы не сможете увидеть информацию. при доступе к странице (или инструкции печати или некоторым другим). также для «хранения информации» я имею в виду, скажем, список слов, например. в файле .php будет строка $x=’blah’;. как кто-то сможет увидеть «бла»
Ответ №1:
Яблоки и апельсины.
Вы можете отправиться на дрэг-рейсинг на Hummer и завершить гонку, но вы наверняка будете последним по сравнению с Bugatti. Возьмите внедорожник Bugatti, и он определенно отстанет от Hummer.
PHP — это язык сценариев на стороне сервера. Хранение и извлечение данных не являются основными соображениями в PHP.
MySQL — это система управления реляционными базами данных. Его дизайн на 100% предназначен для хранения, извлечения и безопасности данных.
Каков ваш план хранения и извлечения данных в PHP? Похоже, для достижения этой цели придется проделать много ненужной работы, заново изобретая колесо. Зачем вам это?
Без понимания того, какие проблемы безопасности вас конкретно беспокоят в MySQL, добавить больше нечего.
Редактировать: статья, в которой указаны общие различия.
Комментарии:
1. это был простой вопрос с, вероятно, простым (и, возможно, большим) ответом, которого я не знаю. каковы последствия для безопасности хранения, скажем, не вредоносных данных строки / массива в файле .php? как кто-то мог это увидеть или изменить. также ваша аналогия довольно забавна, потому что, скорее всего, bugatti не закончит внедорожный курс xD
2. @wxiiir ха-ха, хорошая мысль 🙂 Итак, чтобы ответить на ваш вопрос относительно доступа к данным в плоских файлах php.. это будет связано с доступом к вашей файловой системе. Рассмотрим недавний эксплойт TimThumb (популярный скрипт для создания эскизов на PHP) wpcandy.com/reports/timthumb-security-vulnerability-discovered . Эксплуататоры выяснили, как позволить себе загружать и выполнять произвольный PHP-код в каталоге кэша TimThumb. Теперь представьте, что этот PHP-код просто сбрасывает содержимое всех файлов в веб-каталоге… теперь у них есть все ваши данные.
3. это хорошая информация. допустим, если бы у меня был взломанный веб-сайт, они могли бы легко увидеть информацию, которая будет храниться в обычных файлах php (если бы я сохранил ее таким образом). теперь вопрос в том, почему они не смогут видеть информацию моих баз данных (если вместо использования простых файлов php я бы использовал базу данных mysql)? я предполагаю, что хакерам не составит труда получить доступ к базам данных, если они смогут выполнить любой php-код внутри веб-сайта, возможно, это займет у них в лучшем случае на 10 минут больше, чем доступ к информации в обычных файлах php, я не прав?
4. Базы данных MySQL должны быть настроены в другой части сервера или полностью на другом сервере; они не должны быть доступны в Интернете только для кода на стороне сервера. Пароли и строки подключения должны храниться за пределами веб-каталога в файлах конфигурации сервера. Таким образом, доступ к веб-каталогу не подразумевает немедленного доступа к базе данных; потребуется некоторое обратное проектирование. MySQL также позволяет легко шифровать на уровне полей. Это было бы сложнее, если бы вы делали это вручную в PHP.
5. я думаю, это в значительной степени отвечает на мой вопрос, если скрипт веб-сайта может получить доступ к базе данных, поэтому скрипты, которые хакеры разместят на веб-сайте, или исходный скрипт, но модифицированный хакером, так что, возможно, это сильно задержит их, возможно, нет, но не остановит их. спасибо за ответ, я выберу ваш ответ, хотя комментарии были более разъяснительными. хранение данных в плоских файлах таким образом, чтобы задержать хакеров, это тоже выполнимо, это не задержит их так сильно, но это выполнимо.
Ответ №2:
Эти два пункта будут охватывать большинство проблем безопасности:
1) Изучите PDO и протокол подготовленных инструкций. Это решит большинство, если не все проблемы с внедрением SQL. Не отправляйте необработанный SQL в базу данных.
2) Очистите все ваши данные GET и POST, которые поступают в PHP. Это позаботится о большинстве XSS.
Многие фреймворки на других языках делают это за вас, но новичок в PHP будет просто использовать голый PHP и откроет себя для всех видов атак. Вот почему PHP «небезопасен».
Прочитайте о безопасности и попробуйте реализовать некоторые из указателей, которые вы считаете важными. Ни один язык, фреймворк, платформа и т. Д. Не Являются на 100% безопасными. Как и во всем остальном в жизни, вы предпринимаете как можно больше шагов, чтобы минимизировать риск.
Комментарии:
1. я уже знал о sql-инъекции, и я закодировал много материалов, которые собирали данные post и get, и я каждый раз их правильно очищаю. теперь вы сказали, что новичок в php будет просто хранить данные на голом php и открывать себя для всех видов атак, и именно поэтому php небезопасен, это информация, которая меня интересует, вот почему я создал эту гипотетическую ситуацию, чтобы посмотреть, знает ли кто-нибудь известный способ извлечения данныхданные, сохраненные в «плоских файлах php»