前言
很多人喜欢直接在前端写ajax向后台指定地址提交数据,这样的做法过于草率,当时可能比较省事,后面付出的代价必定是惨痛的。笔者曾“有幸”经历过几次这样的跨域攻击,服务器遇到来自四面八方的海量请求,瞬间崩溃,日志显示请求来自不同国家和城市,这样一来常用的IP防火墙策略收效甚微。最终发现,服务器诸多接口安全性过低,省去了诸多校验,看似化繁为简,实则漏洞百出,攻击者在网上收集“肉鸡”,同时向指定服务器发送请求,致使服务器瘫痪。本文通过常用的dede(织梦)二次开发,
展示安全程度较高的前台数据提交策略,抛砖引玉,望读者日常开发过程勿避重就轻,忽视数据与信息安全。
环境与需求
1. Centos 6.8
2. LANMP
3. DEDEV5.7
4 .需求:使用dede创建自定义表单,前台向后台自定义表单提交数据。
代码实现
切换到dede根目录 创建自定义标签解析文件 /include/taglib/csrftoken.lib.php
<?php
require_once(dirname(__FILE__)."/../helpers/cache.helper.php");
if(!defined('DEDEINC')){
exit("Request Error!");
}
/**
* 自定义csrf_token生成标签
*
* @version $Id: csrftoken.lib.php 1 10:11 2018年1月9日
* @package DedeCMS.Taglib
* @copyright Copyright (c) 2007 - 2010, DesDev, Inc.
* @author underclounds <underclounds@gmail.com>
* @license http://help.dedecms.com/usersguide/license.html
* @link http://www.dedecms.com
*/
/*>>dede>>
<name>csrf签名标签</name>
<type>全局标记</type>
<for>V55,V56,V57</for>
<description>生成指定长度的随机加密字符串,每十分钟过期一次,用于前后台数据交互的验证 防止csrf攻击</description>
<demo>
{dede:csrftoken name='token名 默认csrf' len='长度 默认12位' exp='过期时间 默认600秒' /}
</demo>
<attributes>
</attributes>
>>dede>>*/
function lib_csrftoken(&$ctag,&$refObj)
{
global $dsql,$envs;
//读取sessionId
@session_start();
$sessionId = session_id();

本文详细介绍了在dede(织梦)系统中如何实现数据提交的CSRF(跨站请求伪造)防护机制,包括环境背景、需求分析以及具体的代码实现步骤,旨在提升网站的安全性。
最低0.47元/天 解锁文章
183

被折叠的 条评论
为什么被折叠?



