В классе есть простая функция, которая инициализирует переменную сообщения, устанавливая для нее значение POST. Есть ли смысл его устанавливать, так как $ _POST будет доступен в любом месте класса? Это вызывает какие-либо проблемы безопасности?
function set_posted_data(){
$this->message = $_POST["message"];
}
Я бы сделал это немного по-другому. К сожалению, я понятия не имею, как выглядит ваш класс, поэтому я должен сделать некоторые предположения. Прежде всего, я бы всегда начинал с общей функции:
public function setMessage($message) {
$this->message = $message;
}
Таким образом, вы все еще можете использовать класс, даже если сообщение не опубликовано. Теперь обычно я устанавливаю опубликованное значение следующим образом:
myclass.setMessage($_POST["message"]);
Так что я бы вообще не использовал суперглобальные классы в классе. Обычно я бы окружил это некоторыми проверками, поэтому принимаются только действительные сообщения. Вот где я сталкиваюсь с проблемами: я понятия не имею, что здесь делать, потому что я ничего не знаю о вашем коде. Но проверка длины может быть полезной, и, возможно, HTML-код недопустим и т. Д. Общие проверки могут быть включены в класс, например, без HTML:
public function setMessage($message) {
$this->message = strip_tags($message);
}
Я обработал бы все опубликованные параметры и сделал бы все определенные проверки, более или менее вместе. Это облегчает проверку безопасности кода.
Я предпочитаю инъекции для всего, кроме верхнего уровня функций. (Т.е. $class->function($_POST['val'])
Причина инъекции является предпочтительной
Конечно, лучше делать так, как вы показываете, для этого есть несколько причин: