#php #codeigniter #csrf-protection
#php #codeigniter #csrf-защита
Вопрос:
Я использую хостинг Godaddy Linux и развернул на нем исходный код codeigniter. Он работает абсолютно нормально на localhost. Мое имя контроллера по умолчанию — «Добро пожаловать».
-
Когда я пытаюсь войти в систему, нажав кнопку входа после ввода имени пользователя и пароля, без указания имени контроллера по умолчанию в URL, тогда появляется сообщение «Запрошенное вами действие запрещено». в некоторых местах это работает нормально. Вот как я пишу url ‘https://www.example.com ‘
-
Когда я пишу имя контроллера по умолчанию в URL, затем введите имя пользователя и пароль, а затем нажмите кнопку входа. все работает нормально. Вот как я пишу https://www.example.com/Welcome
-
Когда я удаляю ‘www’ из base_url в файле конфигурации, он отлично работает в некоторых местах, но не работает в некоторых других местах. Вот мой конфигурационный файл
$config['base_url'] = 'https://www.example.com/'; $config['index_page'] = ''; $config['uri_protocol'] = 'REQUEST_URI'; $config['url_suffix'] = ''; $config['language'] = 'english'; $config['charset'] = 'UTF-8'; $config['enable_hooks'] = FALSE; $config['subclass_prefix'] = 'MY_'; $config['composer_autoload'] = FALSE; $config['permitted_uri_chars'] = 'a-z 0-9~%.:_-@'; $config['enable_query_strings'] = FALSE; $config['controller_trigger'] = 'c'; $config['function_trigger'] = 'm'; $config['directory_trigger'] = 'd'; $config['allow_get_array'] = TRUE; $config['log_threshold'] = 0; $config['log_path'] = ''; $config['log_file_extension'] = ''; $config['log_file_permissions'] = 0644; $config['log_date_format'] = 'Y-m-d H:i:s'; $config['error_views_path'] = ''; $config['cache_path'] = ''; $config['cache_query_string'] = FALSE; $config['encryption_key'] = ''; $config['sess_driver'] = 'files'; $config['sess_cookie_name'] = 'ci_session'; $config['sess_expiration'] = 7200; $config['sess_save_path'] = NULL; $config['sess_match_ip'] = FALSE; $config['sess_time_to_update'] = 300; $config['sess_regenerate_destroy'] = FALSE; $config['cookie_prefix'] = ''; $config['cookie_domain'] = ''; $config['cookie_path'] = '/'; $config['cookie_secure'] = FALSE; $config['cookie_httponly'] = FALSE; $config['standardize_newlines'] = FALSE; $config['global_xss_filtering'] = FALSE; $config['csrf_protection'] = True; $config['csrf_token_name'] = 'csrf_snt_token'; $config['csrf_cookie_name'] = 'csrf_cookie_snt'; $config['csrf_expire'] = 7200; $config['csrf_regenerate'] = TRUE; $config['csrf_exclude_uris'] = array(); $config['compress_output'] = FALSE; $config['time_reference'] = 'local'; $config['rewrite_short_tags'] = FALSE; $config['proxy_ips'] = '';
Я не знаю, где я делаю неправильно. Я хочу, чтобы он работал, даже не записывая имя контроллера по умолчанию в URL. Любая помощь будет высоко оценена 🙂
Комментарии:
1. Вам нужно посмотреть область / файл маршрутов, который определяет, как пользователи перемещаются по вашему приложению
2. в файле маршрута нет ничего, кроме имени контроллера по умолчанию
3. я думаю, что проблема связана с файлом .htaccess. вам нужно написать правила перезаписи и условия перезаписи.
Ответ №1:
используйте код htaccess, который указан в URL-адресе CI_Docs