Intereting Posts
Ограничить количество виджетов в боковых панелях Создание плагина wordpress, в котором пользователи могут переопределять шаблоны Как вставить путь изображения в базу данных для отображения изображения продукта в wp-admin? Как я могу переписать URL-адрес и категорию фильтра и таксономию как условие views Как загрузить javascript на пользовательский шаблон страницы? Как использовать элементы формы WP по умолчанию для взаимодействия с пользовательской таблицей DB? Ограничить доступ к профилю пользователя Маленький белый квадратик Fancybox Невозможно установить wordpress, /wp-admin/install.php, inproper redirection Показать более 20 элементов в страницах или записях Как есть 2 меню, которые могут быть достигнуты с другим меню, таким как вкладки Multisite – сортировка слияния запросов get_posts () Почему этот цикл $ wpdb занимает 5 раз? Как обновить настройку темы после изменения цвета внутри wpColorPicker? Отображение выпадающего меню с иерархическими таксономиями

Nonces и Cache

Понятно, что запросы форм и запросы AJAX, особенно разумные, нуждаются в «nonces», чтобы избежать определенных эксплойтов. Однако при интенсивном использовании систем кэширования становится сложнее их генерировать и выводить свежие nonces вместо кешированных.

Чтобы решить эту проблему, я подумал о создании функции AJAX, которая возвращает новое сообщение nonce, которое необходимо запросить до отправки формы. Это nonce будет добавлено к форме как скрытое поле.

Считаете ли вы, что это безопасный подход?

Функция PHP, чтобы вернуть новую строку:

function create_nonce() { return wp_create_nonce('my-nonce'); } add_action('wp_ajax_create_nonce', 'create_nonce'); add_action('wp_ajax_nopriv_create_nonce', 'create_nonce'); 

Отправить форму ( request () – это настраиваемая функция, которую я создал, чтобы легко выполнить запросы ajax):

 $('form').on('submit', function(e){ e.preventDefault(); var $form = $(this); request('create_nonce', function(nonce){ // Append the fresh nonce to the form $form.append('<input type="hidden" name="nonce" value="'+nonce+'">'); // Proceed with the form submission... }); });