大数跨境
0
0

wordpress函数wp_nonce_field

wordpress函数wp_nonce_field wordpress知识
2025-10-24
0

wp_nonce_field函数用于生成一次性验证令牌(nonce),主要作用是防止跨站请求伪造(CSRF 攻击)。它能确保表单提交或链接请求来自你的网站,而非恶意第三方伪造。

nonce是 “Number Used Once” 的缩写,即 “仅使用一次的数字”,是一个随机生成的令牌,绑定到当前用户和操作场景。确保表单提交、链接点击等操作是用户 “主动且在你的网站上” 发起的,而非黑客通过伪造请求触发(如恶意提交表单、执行敏感操作)。

wp_nonce_field($action$name$referer$echo);
  • $action(字符串,可选): 绑定的 “操作名称”(如 ”“submit_form”),用于区分不同场景的验证,默认值为 -1。

  • $name(字符串,可选):表单中 nonce 字段的name属性,默认值为 _wpnonce。

  • $referer(布尔值,可选):是否生成 “来源验证字段”(_wp_http_referer),用于验证请求来源页面,默认 true。

  • $echo(布尔值,可选):是否直接输出字段,true 输出,false 返回字符串,默认 true。


在自定义表单中调用 wp_nonce_field(),会自动生成一个隐藏字段(包含 nonce 令牌)

<form method="post" action="">  <!-- 生成 nonce 字段(关键安全步骤) -->  <?php wp_nonce_field( 'submit_contact_form', 'contact_form_nonce' ); ?>  <!-- 其他表单字段 -->  <input type="text" name="name" placeholder="姓名">  <input type="email" name="email" placeholder="邮箱">  <button type="submit" name="submit_form">提交</button></form>

前端渲染后,会生成类似以下的隐藏字段:

<input type="hidden" id="contact_form_nonce" name="contact_form_nonce" value="5f8d5a5b5c"><input type="hidden" name="_wp_http_referer" value="/contact/"> <!-- 若 $referer 为 true -->

添加 nonce 后,必须在后端验证其有效性,否则无法发挥安全作用

// 处理表单提交时验证 nonceif (isset($_POST['submit_form'])) {  // 检查 nonce 字段是否存在  if (!isset($_POST['contact_form_nonce'])) {    wp_die('验证失败:未找到安全令牌');  }  // 验证 nonce 有效性(参数:表单提交的 nonce 值、对应的 $action 名称)  $nonce_verified wp_verify_nonce$_POST['contact_form_nonce'], 'submit_contact_form' );  if (!$nonce_verified) {    wp_die('验证失败:无效的安全令牌');  }  // 验证通过后,继续处理表单数据(清洗、存储等)  $name sanitize_text_field($_POST['name']);  // ...}
// 后台表单验证示例if (isset($_POST['submit_admin_form'])) {  // 验证 nonce 和来源(参数:$action 名称、nonce 字段名)  check_admin_referrer'admin_action''admin_nonce' );  // 验证通过,处理数据  // ...}

【声明】内容源于网络
0
0
wordpress知识
各类跨境出海行业相关资讯
内容 266
粉丝 0
wordpress知识 各类跨境出海行业相关资讯
总阅读1.5k
粉丝0
内容266