@ozornick

Как обезопасить данные класса?

Здравствуйте. Есть некий класс (потому что нужна теория) User, News, ... Как вы работаете с введенными данными?
<?php
class User {
    private $name;
    function setName($name){
        $this->name = $name;
    }

    function getName(){
        return $this->name;
    }
}
$user = new User();
$user->setName('<b>%Name+%</b>');
echo $user->getName();
//  как быть при записи в БД уже готового класса
// где, что проверит удобнее?
// или каждое значение потом экранировать,
$DB->query("INSERT ... $user->getName()");

Да, я могу проверить данные в контроллере, но вдруг появится возможность прямой записи в свойства. Или забить на это и полагаться на контроллер/модель, а в класс писать любые введенные данные?
UPD: Спрашивали про паранойю. Банально, надо проверить вводной тип, пустоту, сравнить с заданными значениями... Я введу массив вместо цифры. Можно явно указать тип вводных данных, но это узко, возможно потребуется расширение логики.
  • Вопрос задан
  • 276 просмотров
Пригласить эксперта
Ответы на вопрос 2
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
Посмотри готовые реализации паттерна active record и ORM
Ответ написан
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Обычно есть отдельные классы проверки типов переменных, их либо выносят в хелперы, либо суют в логику модели(что имхо весьма коряво). По экранированию - если у вас строка предполагает наличие спецсимволов, что в принципе нормально, использование препаред статмент спасает ситуацию полюбому.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы