Подключение к базе данных MySQL из PHP - PullRequest
0 голосов
/ 05 февраля 2011

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

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

контекст: http://www.cyberciti.biz/tips/facebook-source-code.html

Ответы [ 5 ]

3 голосов
/ 05 февраля 2011

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

1 голос
/ 05 февраля 2011

Это не единственный способ, но так делает большинство стран мира (например, 99,999%), и, насколько я могу судить, 100% веб-программистов.

Подумайте об этом: еслипароль где-то жестко запрограммирован в источнике, зачем?Почему бы не сделать учетную запись без пароля и просто ограничить ее доступ к веб-серверу?Некоторые могут сказать: «Ооооооо! Не делай этого!»Но я снова спрашиваю, в чем разница?Какая дыра в безопасности открыта, чего в любом случае нет?

Реальная проблема безопасности - это защита себя от внедрения SQL.Эта широко открытая учетная запись делает вас уязвимым, если:

1) у вас есть сбой в коде, который можно использовать для выполнения действий, которые пользователь не должен делать, или

2) они могутОбманите ваш db-сервер, чтобы он выполнял код с помощью SQL-инъекции.

Так что SQL-инъекция - ваш большой багбу, от которого нужно защищаться.

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

Вы можетеустановить второй уровень защиты для этой таблицы (в случае, если они преодолеют защиту от SQL-инъекций или найдут эксплойт, заставляющий вашу программу делать то, что вы думали, что она этого не сделает), заблокировав ее, чтобы пользователи вообще не могли ее увидеть или написатьк этому.Затем вы пишете две хранимые процедуры: «addUser (имя пользователя, пароль)» и «checkPassword (имя пользователя, пароль)».Это пример "глубокой безопасности", когда у вас есть несколько уровней безопасности для более конфиденциальных данных.

1 голос
/ 05 февраля 2011

Так как PHP будет проанализирован интерпретатором и будет выводиться только HTML, вам не нужно бояться, так как не будет никакого способа завладеть источником PHP (возможно, вы установили соответствующие меры, чтобы источник PHP не мог скачано).

Блокировать весь трафик на сервер MySQL извне. Разрешить использовать только localhost.

0 голосов
/ 05 февраля 2011

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

Существуют также коммерческие продукты для запутывания, такие как http://www.zend.com/en/products/guard/,, которые могут представлять интерес. Я не уверен, включают ли они шифрование строк или нет.

0 голосов
/ 05 февраля 2011

не намного лучше, но вы должны указать это в php.ini http://www.php.net/manual/en/mysql.configuration.php#ini.mysql.default-password

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...