1.非直接执行程序请加上

if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}

2.记得过滤

比如说uid等id需要intval过滤,避免溢出
    文字内容需要htmlspecialchars过滤避免内容变形(DZ内为dhtmlspecialchars)

3.查询条件需要写在'和'中间.

这个是为了避免别人使用查询的条件写出溢出内容

4.所有写入mysql的变量必须addslashes

DZ内为daddslashes,如用DZ无须再次过滤,DZ已将所有$_POST和$_GET过滤,并记得在插入时前后带上'

这是为了避免破第3步将变量内带'使第3条无效
    再需要选择是否插入某字段时记得不要直接使用传递来的代码而是判断是否选上什么再加上,比如

if($click) {
$front = 'a, b ,c';
$back = "'$a', '$b', '$c'";
} else {
$front = $back = '';
}

然后在下面的插入内可以直接加上$front和$back

查询也类似.
    必须记得如果没有将$front和$back为'',这是为了避免让别人利用了.

5.提交内容记得用submitcheck()
    避免被别人利用,比如利用[img]代码

6.确保所有变量都有定义,防止被别人利用
    DZ一直在改进,启用了很多新的变量也放弃了很多旧的变量,希望大家在转换过程中先了解清楚DZ是否有更改或去除以前的变量.
    比如说前段时间的许愿池漏洞就是因为没有定义$discuz_root而被别人利用.

7.extract,eval等函数需要小心使用
    不要被别人利用这个覆盖已有变量达到入侵目的

8.写储存文件的时候记得过滤
    如果你储存文件的后缀名为PHP或其他可执行文件,记得将开头加上

<?PHP
exit('Access Denied');
?>

9.可上传附件的插件记得限制类型

上传附件,为了防止他人上传可执行文件,必须检查后缀名是否含有可执行文件后缀名,最好不允许此类文件上传,如需上传请将文件名改变.
    以下内容转自DZ程序的代码

$attach['attachment'] .= preg_replace("/(php|phtml|php3|jsp|exe|dll|asp|aspx|asa|cgi|fcgi|pl)(\.|$)/i", "_\\1\\2",
substr($filename, , ).'_'.random().'.'.$extension);

10.所有组数在运用前记得写$xxx = array();
    这个的原因很简单,为了避免被利用(在地址直接加上&xxx[xxx]=abc即可被利用)
    有些插件有可能因为这些原因影响插件安全

代码审计名言:任何输入都是不可信的。

浅谈如何保证discuz插件安全的更多相关文章

  1. 浅谈异步上传插件 jquery-file-upload插件

    当我们需要异步上传文件的时候,我们倾向于在网上查找相关的JQuery插件,jquery-file-upload就是我们经常看到的,但是他的主页是英文的,对于我们这些英语比较差的同学来说,简直就是... ...

  2. 浅谈Excel开发:十一 针对64位Excel的插件的开发和部署

    自Office 2010版本开始有了32位和64位之分,对Excel来说,32位的Excel和64位的Excel在性能上的主要区别是64位的Excel能够处理2G及2G以上的大数据集. 随着64位操作 ...

  3. 【大型软件开发】浅谈大型Qt软件开发(二)面向未来开发——来自未来的技术:COM组件。我如何做到让我们的教学模块像插件一样即插即用,以及为什么这么做。

    前言 最近我们项目部的核心产品正在进行重构,然后又是年底了,除了开发工作之外项目并不紧急,加上加班时间混不够了....所以就忙里偷闲把整个项目的开发思路聊一下,以供参考. 鉴于接下来的一年我要进行这个 ...

  4. 浅谈 js 正则之 test 方法

    原文:浅谈 js 正则之 test 方法 其实我很少用这个,所以之前一直没注意这个问题,自从落叶那厮写了个变态的测试我才去看了下这东西.先来看个东西吧. var re = /\d/; console. ...

  5. 【Unity游戏开发】浅谈 NGUI 中的 UIRoot、UIPanel、UICamera 组件

    简介 马三最近换到了一家新的公司撸码,新的公司 UI 部分采用的是 NGUI 插件,而之前的公司用的一直是 Unity 自带的 UGUI,因此马三利用业余时间学习了一下 NGUI 插件的使用,并把知识 ...

  6. 浅谈React数据流管理

    引言:为什么数据流管理如此重要?react的核心思想就是:UI=render(data),data就是我们说的数据流,render是react提供的纯函数,所以用户界面的展示完全取决于数据层.这篇文章 ...

  7. 浅谈|WEB 服务器 -- Caddy

    浅谈|WEB 服务器 -- Caddy 2018年03月28日 12:38:00 yori_chen 阅读数:1490 标签: caddyserverwebhttps反向代理 更多 个人分类: ser ...

  8. 【转】.NET(C#):浅谈程序集清单资源和RESX资源 关于单元测试的思考--Asp.Net Core单元测试最佳实践 封装自己的dapper lambda扩展-设计篇 编写自己的dapper lambda扩展-使用篇 正确理解CAP定理 Quartz.NET的使用(附源码) 整理自己的.net工具库 GC的前世与今生 Visual Studio Package 插件开发之自动生

    [转].NET(C#):浅谈程序集清单资源和RESX资源   目录 程序集清单资源 RESX资源文件 使用ResourceReader和ResourceSet解析二进制资源文件 使用ResourceM ...

  9. 浅谈 Fragment 生命周期

    版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Fragment 文中如有纰漏,欢迎大家留言指出. Fragment 是在 Android 3.0 中 ...

随机推荐

  1. CF CROC 2016 Intellectual Inquiry

    题目链接:http://codeforces.com/contest/655/problem/E 大意是Bessie只会英文字母表中的前k种字母,现在有一个长度为m+n的字母序列,Bessie已经知道 ...

  2. Java中Json解析

    首先准备一个JSON格式的字符串 * String JsonStr = "{object:{persons:" + "[{name:'呵呵',image:'http:// ...

  3. C语言结构体中字符数组的问题

    第一个程序 #include <stdio.h> #include <string.h> typedef struct student { char name[10]; int ...

  4. hibernate 对象三态(瞬态、持久态、脱管态)之我见

    刚开始学习hibernate时,对其对象的三种状态理解的模模糊糊,一直停留在一知半解的状态,前两天又回顾了一下,顿时醒悟,原来三种状态理解起来是很容易的. 先看一下对Hibernate对象状态的解释: ...

  5. Attribute注解

    class Program { static void Main(string[] args) { //Attribute注解,Attribute是附加到方法.属性.类等上面的特殊的标签,在类Type ...

  6. python3.x元组打印错误 TypeError: unsupported operand type(s) for %: 'NoneType' and 'tuple'

    原创by南山南北秋悲 欢迎引用!请注明原地址:http://www.cnblogs.com/hwd9654/p/5676746.html  谢谢! TypeError: unsupported ope ...

  7. C++高精度模板

    原文地址:http://blog.csdn.net/wall_f/article/details/8373395 原文只附代码,没有解析,本文增加了一些对代码的解释. 请注意:本模板不涉及实数运算与负 ...

  8. sql注入基础(原理)

    一.注入的分类 按数据库分类:1.整形 2.字符型(需要考虑单引号闭合的问题,还有注释不必要的语句  #  ) eag:  id='admin'  id='admin and1=1'这样会报错  所以 ...

  9. OA办公系统功能真的越全越好?

    4.原文:http://www.jiusi.net/detail/472__776__4000__1.html 关键词:oa系统,OA办公系统 OA办公系统功能真的越全越好? 很多企业在选择OA办公系 ...

  10. JS中作用域

    var scope = 'global'; var f = function() { console.log(scope); // 输出 undefined var scope = 'f'; } f( ...