Я использую opencart версии 1.5. У меня есть функция в контроллере, и я хочу вызвать кассу. Это работает нормально. Но проблема заключалась в том, что кто-то вроде хакера вызвал эту функцию снаружи opencart и сохранил некоторые нежелательные поддельные данные в моей базе данных. поэтому я хочу остановить вызов этой функции контроллера снаружи от opencart. Его следует вызывать только из кассы opencart, как вызов ajax. Вызов этой функции извне (внешний клиент) с использованием куки строго запрещен.

Я думаю, вы хотите предотвратить атаку CSRF на метод контроллера. Вы можете попробовать Проверка токена в методе контроллера. Установите токен на какое-то значение, а затем проверьте контроллер, если это тот же токен. Если он соответствует, выполните бизнес-логику или ничего не делайте (или сообщите об этом).
Реализуйте это в модуле Checkout.
$token= md5(uniqid());
$_SESSION['csrf_token']= $token;
Теперь сопоставьте токен в SESSION и один, поступающий в методе запроса к контроллеру:
$token = $this->session->data['csrf_token'];
unset($this->session->data['csrf_token']);
if ($token && $this->request->post['token'] == $token) {
// Apply your Business Logic
} else {
// Log a potential CSRF attack.
}
Есть более сложные способы сделать то же самое, но я думаю, что это должно быть полезно.
@ShojibFlamon Чтобы повысить безопасность, вы можете проверить Referrer, если это тот же домен, что и ваш магазин Opencart, а затем либо сделать что-то, либо игнорировать его. $_SERVER['HTTP_REFERER']
Когда я отправляю токен из html из скрытого режима, хакер проверит и увидит токен. затем он скопирует этот токен и снова опубликует его извне. Как я могу защитить?