Для внутренне используемого сайта PHP (без фреймворка) будет ли достаточно PDO + htaccess для предотвращения большинства атак? - PullRequest
1 голос
/ 27 июня 2019

Надеюсь, этот вопрос не слишком глуп. Я новичок в PHP и заинтересован в разработке системы для внутреннего использования персонала. (Таким образом, всем пользователям доверяют - и любой их ввод будет проходить через PDO)

Однако эта система будет размещена в Интернете.

Было бы просто использовать PDO, .htaccess (для ограничения доступа к каталогу) и перенаправлять пользователей при неудачном входе в систему (поэтому пользователи без учетной записи не могут получить доступ ни к одной странице, кроме страницы входа в систему - следовательно, ограничиваются вводимые SQL-инъекции от злоумышленников .. ?) будет достаточно для размещения сайта в сети?

Не рассматривал возможность использования фреймворка, но мне интересно, как именно он будет работать для веб-сайта, который не позволяет публике видеть что-либо, кроме страницы входа? (По крайней мере, я так думаю?)

Для .htaccess,

deny from all

используется.

Для моего index.php он создает новый класс Template Controller

$template = new TemplateController();
$template->template_controller();

Ниже следует класс TemplateController:

<?php

class TemplateController
{

    public function template_controller()
    {

        include "views/template.php";

    }

}

Тогда, наконец, template.php имеет

if (isset($_SESSION["loggedIn"]) && $_SESSION["loggedIn"]) {
    if (isset($_GET["route"])) {
        if ($_GET["route"] == "home" {
            include "modules/" . $_GET["route"] . ".php";
        }
    } else {
        include "modules/404.php";
    }
} else {

    include "modules/login.php";
}

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

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

Заранее спасибо!

РЕДАКТИРОВАТЬ: я не упомянул, как защищена страница входа в систему.

Я использую preg_match для этого.

if (preg_match('/^[a-zA-Z0-9]+$/', $_POST['inUsername']) && 
preg_match('/^[0-9A-Za-z!@#$%^&*(),.<>?\/\-_=+ ]+$/', $_POST['inPassword']))

1 Ответ

0 голосов
/ 27 июня 2019

Кто бы напал на вас внутри. Просто уволить их.

Убедитесь, что вы экранировали и дезинфицируете или проверяете все входные данные, которые необходимо сохранить в БД.

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

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

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