При авторизации пользователя в базу пишется его user-agent.
В среднем заговок обычно имеет меньше 200 символов, поэтому varchar(200) для него более, чем достаточно.
Предположим, атакующий пытается сломать систему и посылает user-agent длиной в 1000 символов.
Приложении это обрабатывает, просто сохраняя первые 200 символов из заголовка.
Это адекватный подход?
Где в таких случаях правильно хранить лимиты? Т.е. задавать в константах размеры данных в БД? В конфигах? Оставлять магические числа?
Я использовал такой подход, что в миграциях для БД использовались константы, заданные в коде, и к этим же константам привязывались валидаторы. Насколько это правильно?
Почти псевдокод
migration.php
use Constants;
class Migration {
public function run() {
$this->db->addColumn('table', 'column', Constants::USER_AGENT_LENGTH);
}
}
Controller.php
use Constants;
class Controller {
public function login(Request $request) {
$userAgent = substr($request->header('user-agent'), 0, Constants::USER_AGENT_LENGTH);
}
}