DedeCMS:CSRF Token Check Failed! 问题说明及解决方案

  • A+
所属分类:dede开发

问题说明:

DedeCMS:CSRF Token Check Failed! 问题说明及解决方案

当使用dede后台进行模板文件编辑的时候,会提示DedeCMS:CSRF Token Check Failed!内容,请注意不是系统BUG而是系统的一种安全防护。

专业名称:CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。

问题解决

1、提示内容出现在 /dede/config.php中,在第63行:

  1. function csrf_check()
  2. {
  3. global $token;
  4. if(!isset($token) || strcasecmp($token$_SESSION['token']) != 0){
  5. echo '<a href="http://bbs.dedecms.com/907721.html">DedeCMS:CSRF Token Check Failed!</a>';
  6. exit;
  7. }
  8. }

上述代码无需变更

2、代码删除部分,在/dede/tpl.php,在92行

  1. else if($action == 'saveedit')
  2. {
  3. csrf_check(); //删除此验证内容即可 www.lijinlong.cc
  4. if($filename == '')
  5. {
  6. ShowMsg('未指定要编辑的文件或文件名不合法', '-1');
  7. exit();
  8. }
  9. if(!preg_match("#\.htm$#"$filename))
  10. {
  11. ShowMsg('DEDE模板文件,文件名必须用.htm结尾!', '-1');
  12. exit();
  13. }
  14. $content = stripslashes($content);
  15. $content = preg_replace("/##textarea/i""<textarea"$content);
  16. $content = preg_replace("/##\/textarea/i""</textarea"$content);
  17. $content = preg_replace("/##form/i""<form"$content);
  18. $content = preg_replace("/##\/form/i""</form"$content);
  19. $truefile = $templetdird.'/'.$filename;
  20. $fp = fopen($truefile, 'w');
  21. fwrite($fp$content);
  22. fclose($fp);
  23. ShowMsg('成功修改或新建文件', 'templets_main.php?acdir='.$acdir);
  24. exit();
  25. }

 

友情提醒

为了后台模板的安全性,建议不要删除上述的验证内容,可以直接使用FTP下载模板,修改后二进制上传覆盖源文件

李金龙

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: