谁清楚phpcms和dedecms各个缺点和优点
其实Base64的加密和解密的算法不是很复杂,首先是定义自己64位的密钥,64个字符是固定,但是顺序是可以随自己的设计而变化。例如:
char[] BaseTable=new char[64]{
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
'0','1','2','3','4','5','6','7','8','9','+','/'};
接下来,在加密的时候就是对于需要加密的每个字符,通过一定的算法,转换成上面64字符的一种;而在解密的时候则是把64字符中任意一个字符反算出加密前的字符。对于每个字符的操作有很多方法,这里就不一一介绍了。需要注意的是“=”字符,在Base64加密算法中,是很重要的,它是起到补零作用。
以下是完整代码:
//----------------------------- Base64 class --------------------------------------
//---------------------------------------------------------------------------------
//---File:clsBase64
//---Description:The class file to encode string or decode string in base algorith
//---Author:Knight
//---Date:Oct8, 2005
//---------------------------------------------------------------------------------
//----------------------------{ Base64 class }-------------------------------------
using System;
namespace Base64
{
/// <summary>
/// Summary description for clsBase64
/// </summary>
public class clsBase64
{
private char[] source;
private char[] lookupTable;
private int length, length2, length3;
private int blockCount;
private int paddingCount;
public clsBase64()
{
//
// TODO: Add constructor logic here
//
source = null;
length = length2 = length3 =0;
blockCount = 0;
paddingCount = 0;
}
/// <summary>
/// Create base64 char array using default base64 char array
/// </summary>
/// <param name="CreatePara"></param>
/// <returns>return the new base64 char array</returns>
private char[] CreateBase64Char( ref char[] CreatePara )
{
char[] BaseTable=new char[64]{
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
'0','1','2','3','4','5','6','7','8','9','+','/'};
const int CREATE_TYPE = 8;
byte bParaValue = 0;
byte bTemp;
for( int i = 0; i < CreateParaLength; i++ )
{
bTemp = ( byte )( CreatePara[i] );
switch( bTemp % CREATE_TYPE )
{
case 1:
// 00000001
bTemp =( byte )( bTemp ^ 0x01 );
break;
case 2:
// 00000010
bTemp =( byte )( bTemp ^ 0x02 );
break;
case 3:
// 00000100
bTemp =( byte )( bTemp ^ 0x04 );
break;
case 4:
// 00001000
bTemp =( byte )( bTemp ^ 0x08 );
break;
case 5:
// 00010000
bTemp =( byte )( bTemp ^ 0x10 );
break;
case 6:
// 00100000
bTemp =( byte )( bTemp ^ 0x20 );
break;
case 7:
// 01000000
bTemp =( byte )( bTemp ^ 0x40 );
break;
default:
// 10000000
bTemp =( byte )( bTemp ^ 0x80 );
break;
}
bParaValue =( byte )( bParaValue ^ bTemp );
}
char chrTemp;
int nIndex;
switch( bParaValue % CREATE_TYPE )
{
case 1:
// Exechange 0 <--> 1, 2 <--> 3, 4 <--> 5, 6 <--> 7
for( int i = 0; i < BaseTableLength / CREATE_TYPE; i++ )
{
回答不容易,希望能帮到您,满意请帮忙采纳一下,谢谢 !
phpcms优点:
1模块化安装,非常适合安装,拆卸,和拿到市场上去交易非常方便的。
2灵活的标签语法,非常强大。
3缓存做的非常优秀。几乎支持目前主流的几大缓存系统解决方案,file缓存,eaelerator缓存,memcache缓存,shmop缓存等
4安全性也不错的。后台为了防范入侵,采用了cookie和session同时存在验证技术,才可以安全进入后台。
多次登录失败,开启验证码功能。防止机器人频繁猜口令。
5数据库。在根目录下的include目录下,db_aessphpdb_mssqlphpdb_mysqlphp等,就照着他的方法,在增加几个也没问题的。
6兼容性。是在php4的基础上开发的,所以向下兼容性是不错的。在include/globalfuncphp这个文件可以看到很多if(!function_exist()){},这些代码就是为了兼容php4相关函数。
phpcms缺点:
1后台对应的模块的功能列表url,从数据库中读取的,也即是,安装的时候,将url写入数据库了。这个如果二次开发要修改的话,不是很方便的,最好是写到文件中,读取文件内容,方便开发者开发,而且也更容易维护,如果是出于安全考虑的话,不妨加下密也可以的。
2分部式。后台的某些功能模块,还是要调用各个应用模块的admin部分,相关*.inc.php文件.如果我要把其中某个模块或应用独立出去部署到其他的服务器上,就不方便了。
3数据库设计问题,后台开设模型时,表的引擎只能是myIsam,而不能选择其他的,字段的类型,比如要开设一个字段为number,类型为int,但是在新增加的模型表中还是以varchar出现,而不是int,长度是默认的255modelfiled表,才发现该系统是将类型写到该表中了。
4加密/解密程序。目前已经在想相关安全网站已被爆以破解。这也不是什么新闻了。在开发中,关注下相关安全厂商发布的漏洞。
5数据库抽象层。就以上提到的几个数据库文件。db_mssqlphpdb_mysqlphpdb_aessphp等对于数据库分布式,应该没问题的。数据库抽象层处理数据比较快,且快平台更容易且更容易维护,这个是需要考虑的。
Dedecms功能实用,模板功能使用简单。
DEDECMS安全性终极设置
1、需要设置 可读写不可执行 的目录为:data、templets、uploads、a目录;
2、需要设置为 可读可执行不可写入 的目录为:include、member、plus、后台管理目录(默认dede)、模块目录book、ask、company、group……
3、不需要 会员、专题的,可以直接 删除 member、special 目录,或者重命名;
4、已经安装好dedecms的直接删除install目录;
5、MySQL用户千万别给root权限,应设置为:SELECT, INSERT , UPDATE , DELETE、CREATE , DROP , INDEX , ALTER , CREATE TEMPORARY TABLES;
6、管理员帐号密码尽量复杂些,md5网站破解不出为妙,发布文章请新建并使用一个信息发布员权限用户。
7、定期备份网站目录和数据库,并进行木马查杀,脚本特征码。
data、templets、uploads目录的权限-----可读写不可执行
include、plus、upup的权限------可读可执行不可写入
data/commonincphp 只读
第一、安装的时候数据库的表前缀,最好改一下,不用dedecms默认的前缀dede_,可以改成ljs_,随便一个名称即可。
第二、后台登录开启验证码功能,将默认管理员admin删除,改成一个自己专用的,复杂点的账号。
第三、装好程序后务必删除install目录
第四、将dedecms后台管理默认目录名dede改掉。
第五、用不到的功能一概关闭,比如会员、评论等,如果没有必要通通在后台关闭。
第六、以下一些是可以删除的目录:
member会员功能
special专题功能
company企业模块
plus\guestbook留言板
以下是可以删除的文件:
管理目录下的这些文件是后台文件管理器,属于多余功能,而且最影响安全
file_manage_controlphp
file_manage_mainphp
file_manage_viewphp
media_addphp
media_editphp
media_mainphp
0条评论