Настройте сервер mySql, и теперь Xampp необходимо понимать основы безопасности - PullRequest
0 голосов
/ 05 октября 2018

Опять же, я задаю самые простые вопросы ...

Каким-то чудом я установил сервер mySql и использовал приложение Workbench для создания моей первой таблицы.За неделю я выучил достаточно PHP, чтобы сделать приложение настолько уязвимым, что я выбрасываю его и начинаю заново.Я хочу перенести разработку на свой локальный компьютер, чтобы я только запустил Xampp и использовал его, чтобы без проблем запустить сервер mySql.Как это возможно, что я запустил сервер без ввода учетных данных?Я установил пароли MySql Server с помощью Workbench.Я еще не использовал командную строку с сервером.Я открыл localhost с помощью Chrome, и он показал IP-адрес.Что мне нужно делать дальше в отношении базовой безопасности?Спасибо, что нашли время, чтобы прочитать это.

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Основы

Давайте разберемся, как работает PHP;когда вы пишете код PHP, то есть код, который находится в пределах <?php ... ?>, он будет выполняться на сервере, в данном случае ваш экземпляр XAMPP.

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

Рендеринг будет любым после echo, print_r, var_dump или за его пределами.из ваших скобок PHP.

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

Примеры

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

  1. Всегда фильтровать пользовательский ввод

Этот должен быть заданным;но изо дня в день новый веб-сайт взламывают, потому что входные данные не были отфильтрованы должным образом, что позволило кому-либо внедрить код в сценарий - будь то экземпляр SQL или интерфейсный код JavaScript.

Один отличный способвсегда бросать то, что вы на самом деле ищете;PHP - это слабый язык типов.Это означает, что '1' == 1.('1' - строка, а 1 - целое число)

Один из способов обойти это - типы приведения при работе с пользовательским вводом.Знайте, что вам нужно в вашей базе данных.Будь то строка, целое число или логическое значение.Это позволит вам быть уверенным, что запрос к базе данных выполняется только с правильными типами.

Например:

$var = (integer) 'Hello';
var_dump($var); // returns `int(0)`
Использованные подготовленные операторы

Они не так сложны, и они очень просты, когда речь заходит о безопасности - это один из лучших способов использовать данные пользователя, не вставляя их непосредственно в одно из них.из ваших SQL-запросов.

Пример очень плохого запроса:

$sql = 'SELECT * FROM users WHERE id = ' . $id;
$query = $connection->query($sql);

Что вы должны выбрать:

$sql = 'SELECT * FROM users WHERE id = ?';
$stmt = $connection->prepare($sql);
$stmt->bind_param('i', $id);
$stmt->execute();

Пожалуйста, подробнее здесь .

Заключительные мысли

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

Наряду с PHP вы узнаете об Apache и о том, как делаются запросы, полностью разбираетесьHTTP-запросы, и это даст вам лучшее понимание того, что нужно учитывать при создании безопасного приложения.У вас может быть самый большой код PHP в мире, но если ваши HTTP-протоколы не используют SSL, то любой запрос, отправляемый на ваш сервер, находится в plaintext, чтобы весь мир мог его увидеть.

0 голосов
/ 05 октября 2018

Как это возможно, что я запустил сервер без ввода учетных данных?

Сервер - это просто исполняемая программа, как и любая другая, и на нее распространяется уровень безопасности, обеспечиваемый вашей операционной системой.файловая система.Большинство систем классифицируют пользователей по группам, таким как user или admin, и люди, принадлежащие к каждой группе, имеют разные привилегии, при этом admin имеет больше привилегий.Поэтому вам нужно настроить на компьютере, где работает ваш сервер, кому разрешено, а не запускать сервер.Как правило, пользователи / группы могут быть настроены «без доступа», «доступ на чтение», «доступ на запись» или «доступ на выполнение», или в какой-либо значимой комбинации из них.Вы должны прочитать об этом.

Что мне нужно делать дальше в отношении базовой безопасности?

Ваш SQL-сервер, если он настроен правильно, разрешит или отклонит соединенияот пользователей, как вы уже настроили.Это поможет многим предположить, что настроен правильно, но вам нужно проверить, войдя в систему как разные пользователи или изменив строку подключения в PHP.

Что касается PHP и SQL, то действительно легко быть уязвимым SQLИнъекционные »атаки.Это может произойти, когда пользователи вводят исполняемые операторы SQL в формы.Вы можете избежать этого, ВСЕГДА ИСПОЛЬЗУЯ ПОДГОТОВЛЕННЫЕ ЗАЯВЛЕНИЯ - и я сознательно кричу об этом!Если вы не знаете «подготовленные операторы SQL», прочитайте, но все это означает (упрощенно), что вы отправляете операторы шаблонов SQL серверу SQL одной командой, а параметры поиска отправляете позже.Это блокирует атаки Injection, так что ваш PHP-скрипт никогда не выполняет полный SQL-оператор, введенный в форму.

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

...