DEDECMS如何取消服务器/主机空间目录脚本的执行权限

网站安全中,对目录的执行权限是非常敏感的,一般来说,可以写入的目录是不能够拥有脚本的执行权限的,像DedeCMS系统,可写入的有两个目录data、uploads,data目录主要是基本配置文件和缓存数据,uploads则是附件上传保存的目录,本篇将针对不同服务器环境来介绍如何取消这两个目录的执行权限,当然我们也建议用户其他一些生成纯静态html的目录,拥有可写入权限的也统统去除执行权限,这样系统会更为安全。

Windows下的IIS

IIS6.0

打开IIS中站点,在站点uploads目录、data目录以及静态html生成目录点击右键,菜单中选择“属性”,在目录属性面板选择执行权限为“无”即可。(如图1)

(图1)

 

IIS7

IIS7也类似于IIS6.0,选择站点对应的目录,data、uploads及静态html文件目录,双击功能试图面板中的“处理程序映射”(如图2)

(图2)

在“编辑功能权限……”中,我们直接去除脚本的执行权限即可。(如图3)

(图3)

 

Apache下目录脚本的执行权限设置

独立主机配置

在Apache中,没有Windows 下IIS的图形管理界面,我们需要手工修改下apache的配置文件,来进行目录脚本的执行权限的设定。
首先我们找到apache的配置文件httpd.conf,通常情况下,该配置文件在apache安装目录下的conf文件夹中(如图4)。

(图4)

打开httpd.conf文件,找到内容中如图5的位置:

(图5)

 

将需要限制执行脚本文件的目录配置添加到下方:

配置内容为:

1 <Directory "DIR">    
2 <FilesMatch ".(php|asp|jsp)$">     
3     Deny from all    
4 </FilesMatch>
5 </Directory>

 

配置内容中的DIR为需要限制执行脚本文件的目录,FilesMatch后的内容为需要限定的执行的脚本后缀名。例如:这里需要禁止测试站点uploads文件夹下的PHP,ASP,JSP脚本的运行,则进行如下图6配置:

(图6)

 

在配置完成后,重启一下apache,配置便生效!
在操作前,uploads文件夹下我新建了一个index.php文件,图7为未作配置前访问情况

(图7)

图8为重启apache后访问该页面的效果。

(图8)

虚拟主机/空间配置

在配置前需要确认你的空间是否支持.htaccess和rewrite,该方法基于.htaccess文件中使用rewrite来达到禁止指定脚本的运行效果。
规则内容如下:

1 RewriteEngine on  RewriteCond % !^$  
2 RewriteRule uploads/(.*).(php)$ – [F]  
3 RewriteRule data/(.*).(php)$ – [F]  
4 RewriteRule templets/(.*).(php)$ – [F]

 

针对uploads,data,templets 三个目录做了执行php脚本限制;
将如上内容存储至到.hatccess文件中,将该文件存放到你的站点根目录下,

这样,目录脚本的执行权限就控制好了,规则上传前后的效果同图7,图8。

对于虚拟主机用户,可直接下载此压缩包(里面为.htaccess文件),解压后上传到网站根目录即可。

点击下载htaccess

正则表达式编写工具

推荐

http://rubular.com/

这个工具在学习的过程中是必备的。

Rubular 网站的界面很友好,便于编写所需的正则表达式,网站中还有一个便捷的快速语法参考。

读的再多也不比不上在 Rubular 中实操几次。

http://rubular.com/

Web前端CSS框架-Bootstrap

简介

Bootstrap是Twitter推出的一个开源的用于前端开发的工具包。它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架。Bootstrap提供了优雅的HTML和CSS规范,它即是由动态CSS语言Less写成。Bootstrap一经推出后颇受欢迎,一直是GitHub上的热门开源项目,包括NASA的MSNBC(微软全国广播公司)的Breaking News都使用了该项目。

组件

Bootstrap中包含了丰富的Web组件,根据这些组件,可以快速的搭建一个漂亮、功能完备的网站。其中包括以下组件:
下拉菜单、按钮组、按钮下拉菜单、导航、导航条面包屑、分页、排版、缩略图、警告对话框、进度条、媒体对象等

Javascript插件

Bootstrap自带了13个jQuery插件,这些插件为Bootstrap中的组件赋予了“生命”。其中包括:
模式对话框、标签页、滚动条、弹出框等。

定制自己的框架代码

可以对Bootstrap中所有的CSS变量进行修改,依据自己的需求裁剪代码。

 

Bootstrap中文网.http://www.bootcss.com/

Cakephp数据库中文乱码问题

页面上显示正常,数据库里是乱码,解决方法如下:

/app/Config/database.php

var $default = array(
‘driver’ => ‘mysql’,
‘persistent’ => false,
‘host’ => ‘localhost’,
‘login’ => ‘root’,
‘password’ => ”,
‘database’ => ‘cp’,
‘prefix’ => ”,
 ‘encoding’ =>’utf8′
);

CakePHP2命名规范

CakePHP的命名规范相当重要,遵循CakePHP框架的命名规范,可以获得框架内置的各种功能。CakePHP2发布之后,命名规范这块与老的框架没有任何区别,本文同时适用于CakePHP 2.x和CakePHP 1.x框架。

总得来说,文件名使用下划线,类名用驼峰命名法。比如,MyNiftyClass类对应的文件名就是my_nifty_class.php。下面是不同类型的类和其相对应的文件命名方式的一些例子,

控制器类KissesAndHugsController,可以在kisses_and_hugs_controller.php文件中找到(注意文件名中的_controller)。

组件类MyHandyComponent,可以在my_handy.php文件中找到。

模型类OptionValue可以在option_value.php文件中找到。

行为类EspeciallyFunkableBehavior,可以在especially_funkable.php文件中找到。

视图类SuperSimpleView,可以在super_simple.php文件中找到。

助手类BestEverHelper,可以在best_ever.php文件中找到。

上述的每个文件都存放在相应的文件夹中。

总结:类名中,除了模型类,都需要在类命中标明该类的身份,比如Controller,Component,Behavior等。文件名中,只有控制器类需要标明身份,即在文件末尾加上_controller.

模型和数据库命名规范

模型类名使用单数驼峰命名法,Person,BigPerson以及ReallyBigPerson都是约定的模型命名。

表名使用复数和下划线命名。与上述模型相对应的表名分别是people,big_people和really_big_people。

可以使用“inflector”库检查单词的单复数形式。

包含两个或更多单词的字段名,以下划线命名,比如first_name。

在hasMany,belongsTo,hasOne关系中,外键默认由相关表加_id表示。举例来说,一个Baker和Cake之间的关系是一对多,那么在cakes表中会存在一个baker_id外键来关联bakers表(注意,这里的关联外键是单数)。对于多个单词组成的表名,像category_types,外键会事category_type_id。即表名虽然是复数,但是在其它表中存在的该表外键,要以单数形式命名。

多对多关系中一般会存在一个链接表,该链接表字段的一个命名方式是需要以单词首字母字母顺序排列,例如apples和zebras两张表,在链接表中,他们应该是apples_zebras,而非zebras_apples。

所有CakePHP模型交互的表,都需要唯一的主键来标示每一行数据。CakePHP不支持组合主键,如果你想直接操作链接表数据,可以直接使用SQL语句。

除了使用递增字段作为主键之外,还可以使用char(36)作为主键。在使用odel::save方法保存记录时,CakePHP会自动识别该字段,并使用(String::uuid)生成一个36位的字符串作为唯一主键。

控制器命名规范

控制器类名使用复数驼峰命名法,并且以Controller结尾。PeopleController以及LatestArticlesControlle都是合法的控制器命名方式。

控制器中的首个方法应该是index()方法,当请求只指定了控制器,没有动作方法时,CakePHP默认执行该控制器的index()方法。

通过在控制器方法名之前加一个下划线,可以更改该控制器方法的可见范围。如果控制器方法前有一个下划线,这个方法就只能在内部使用,而无法通过浏览器访问。

控制器类名与URL地址

单个单词的控制器能够非常容易的被映射到小写的URL地址上。例如,ApplesController可以通过http://example.com/apples访问。

多词控制器的访问地址,可以是该控制器名的任何曲折形式。

  • /redApples
  • /RedApples
  • /Red_apples
  • /red_apples

都能指向到RedApples控制器的index方法。不过,命名约定规定,url地址应该是小写单词加下划线组成。因此,/red_apples/go_pick是请求RedApplesController::go_pick方法的正确形式。

视图命名规范

视图模板文件通过调用他们的控制器方法命名,以下划线分隔多词。PeopleController类中得getReady()方法,会自动关联/app/views/people/get_ready.ctp视图模板。

命名方式就是/app/views/<controller name>/<underscored_function_name>.ctp。

总结

数据库表名:people
模型类:person,路径app/models/person.php
控制器类:PeopleController,路径app/contollers/people_controller.php
视图类:app/views/people/index.ctp

使用这种命名约定,CakePHP能够将http://example.com/people/映射到PeopleController控制器的index()方法,Person模型可以直接在该控制器中使用,并且该模型会自动与people表绑定,然后输出视图。所有这一些不需要配置,只要你遵守CakePHP的命名约定即可。

转载请注明:锐想Magento » CakePHP2命名规范

Visual Studio 2010使用Visual Source Safe2005进行版本管理

最近用上了vs2010..呵呵

昨天要团队做一个网站..

发现本来的Add Project Source Control.. 菜单项 已经变成了连接到 TFS源代码管理器了..

无奈没有TFS2010 服务器..试了几次无法连接到VSS2005..

google 了一下.. 才找到 原来vs2010 也可以连接到vss2005 的..呵呵

原文:

To configure VSS2005 with VS2010 we can change the settings in Tools-> Options-> Source Control-> Select the Vss Source Safe option.

Then try to open the solution or project directly see that will help.

Cheers 🙂

..

PostURL:http://social.msdn.microsoft.com/Forums/fr-FR/vssourcecontrol/thread/a3526c4c-9227-49da-93b3-709398b3d5b9

 

然后建议安装一个vss2005更新:VSS integration with Dev10

http://code.msdn.microsoft.com/KB976375

 

VSS用法指南

The usage of VSS (Visual Source Safe 2005)

1. 首先,当然是得安装好Visual Source Safe 2005

你可以在Visual Studio 2005的安装光盘中找到VSS目录,相关的安装文件就在那个目录下,如果你的光盘上没有,你可以发送一封邮件给我:stillful@foxmail.com, 我可以发送一份给您。

安装好VSS后程序菜单中应该已经有相应的快捷方式了:

image

2. 配置”Microsoft Visual SourceSafe Administration“(VSS管理器VSSA)

1). 启动VSS管理器 (因汉化包的效果并不理想,偶建议大家还是使用英文版)

2). File – > New database… (文件->新建数据库)

image

image

若您的盘符仍是FAT32文件系统,会出现警告信息:

image

建议,使用以下方法快速转换您的盘符到NTFS格式,否则VSS权限设置功能会受限。

 

如何快速将硬盘从FAT32转换为NTFS  (Windows XP下

i.   开始->”运行”   –  cmd

ii.  打开窗口以后,在光标的提示符下输入“covert X:/FS:NTFS”,然后回车。

注意在“covert”的后面有一个空格,这里的X就是您刚才指定Location所在的盘符。

iii. 接着系统会要求你输入X盘的卷标,然后回车。

卷标在“我的电脑”中点X盘,然后看它的属性可以找到。

这样就可简单地转换分区格式为NTFS了。这个方法只用于FAT32转为NTFS,不能将NTFS转为FAT32.

iv.该方法仅在windowsXp下测试成功,其他操作系统未用测试。

v. 转换的方法有很多,可以考虑使用http://news.softhouse.com.cn/news/show/10468.html上提供的更多方法。

 

继续:

3. 给自己项目的VSS起个名字,可以用类似:”VSS-My Project Source Code”这样的名字

image

4. 使用以下默认选项:

image

5. 完成了数据库的设置:

image

6. 完成后OK即可:

image

7. 来看一看新建数据库后VSS管理器(VSSA)里已经默认建立的用户名列表:

image

显然,默认情况下VSSA会创建三个用户帐号:

Admin,Guest,当前登录的用户名

8. 进入服务器配置

image

image

9. 确定后就会有服务新增:

image

10. 直接允许(如果你也装过360安全卫士的话)

image

现在可以修改Admin的密码了,空密码在客户端连接时易造成很大困惑,建议一定要改!

11. 双击Admin帐号或

image

12. 修改完成后

image

13. 最后,设置My Project的权限:共享和Web共享都开放全部权限(安全考虑可以清除Everyone权限,添加Administrators权限)

image

========到本步骤,服务器端已经设置完毕,现在可以转入客户端的VSS来配置了。=========

 

14. 在Lan的计算机上(客户端) 同样安装好VSS

 

15. 转入 “Microsoft Visual SourceSafe” (VSS)

打开已存在的数据库:

image

16. 连接到服务器的数据库

image

18. 新建连接后可以打开了!

image

19. 指定VSS目录所对应的本地的“工作目录”

image

20.本地的工作路径(截图时采用同一机器作的实验,所以能够看得到My Project(勿怪!)

image

 

21. 启动Visual Studio 2005 部署你的项目到VSS

在客户端启动VS2005,将项目框架部署到VSS中去:

1). 工具->选项

image

2). 插件设置

image

3). 将解决方案添加到源代码管理中:

image

4). 用帐号登陆:

image

5). 新建的VSS项目名称:归属到$/根目录下:

image

访问是否新建目录:

image

 

22. 现在的视图有变化了:

image

 

23. 对所有的团队开发成员约定以下几点:

1. 必须下载最新版本后现进行修改;

2. 修改需要签出(Check out)

3. 当完成修改后及时签入(Check in)

4. 不要一性长久签出多个文件(会造成团队其他成员长时等待)

5. 建议由项目管理人员首先将项目框架部署好,其他团队成员可以使用VS“获取”来得到最新版本数据

 

24. 图示1)位置为获取最新版本,2)为签出(修改前必须这样做)

image

其他几张截图:

当签出以进行编辑时的提示框(选项中可以关闭之)

image

被Default.aspx被签出到本地后的标志是前面打上了红勾!

image

当被签出后,其他人员在VSS中看到该文件的状态:

image

修改PHP上传文件大小限制

1. 一般的文件上传,除非文件很小.就像一个5M的文件,很可能要超过一分钟才能上传完.
但在php中,默认的该页最久执行时间为 30 秒.就是说超过30秒,该脚本就停止执行.
这就导致出现 无法打开网页的情况.这时我们可以修改 max_execution_time
在php.ini里查找
max_execution_time
默认是30秒.改为
max_execution_time = 0
0表示没有限制

2. 修改 post_max_size 设定 POST 数据所允许的最大大小。此设定也影响到文件上传。
php默认的post_max_size 为2M.如果 POST 数据尺寸大于 post_max_size $_POST 和 $_FILES superglobals 便会为空.
查找 post_max_size .改为
post_max_size = 150M

3. 很多人都会改了第二步.但上传文件时最大仍然为 8M.
为什么呢.我们还要改一个参数upload_max_filesize 表示所上传的文件的最大大小。
查找upload_max_filesize,默认为8M改为
upload_max_filesize = 100M

另外要说明的是,post_max_size 大于 upload_max_filesize 为佳.

css3元素简单的闪烁效果 (html5 jquery)

<html>
<head>
<style>
@-webkit-keyframes twinkling{ /*透明度由0到1*/
0%{
opacity:0; /*透明度为0*/
}
100%{
opacity:1; /*透明度为1*/
}
}

.twinkling{
-webkit-animation: twinkling 1s infinite ease-in-out;
}

.yellow{
background:yellow;
}
</style>
</head>
<body>
<div class=”twinkling yellow”>Go!!!</div>
</body>
</html>

 

注:动画名称为twinkling 时间为1s 动画次数为无限次 动画效果ease-in-out

简单吧!其实用css3做动画效果,比用flash,javascript要方便简单多了!希望浏览器赶快都支持css3 Animation .目前webkit内核的浏览器都支持(safrai,chrome)

摘自:html5专栏

上传控件(file类型的input控件)自定义样式出现“form.submit拒绝访问”错误

直接说解决办法,原理就是利用label控件。在点击label时,相当于触发上传控件的“浏览”按钮,且不会发生“拒绝访问”错误。

只有两步:

1、用CSS隐藏input控件,注意不能用display:none的方法,否则控件的功能也失效了。代码如下:

#upload_file{
position:absolute;
top:-9999px;
opacity:0;
filter:alpha(opacity:0);
}

2、为input控件添加label,属性for的值即为上传控件的ID,代码如下:

<label for=”upload_file”>上传新图标</label>

 

剩下的就是利用CSS美化这个label了。

JavaScript控制计算机 | JavaScript执行shell命令 | Javascript读写文件

其实,只要浏览器赋予网站的权限足够大,那么利用Javasript可对计算机实现非常多的控制。

比如,执行命令行命令(如关机命令、打开某个程序)、操作文件系统(如操作文件、操作目录)等。

这个过程有两个要解决的关键问题:

第一,如何让浏览器赋予特定网站足够的权限。

第二,Javascript代码如何编写。

下面分别介绍。

第一,让浏览器赋予我们的网站足够的权限。IE浏览器“工具”–Internet选项–安全,将站点添加至可信站点。对可信站点进行“自定义级别”,启用“对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本”。至此完成。

第二,JavaScript代码如何编写。提供下面两个函数供参考。

/*
* 说明:运行脚本命令或脚本文件
* 示例:shell_run(“shutdown -r -t 30”);
shell_run(“c:\\shutdown.bat”);
*/
function shell_run(shell_path) {
try {
var objShell = new ActiveXObject(“wscript.shell”);
objShell.Run(shell_path);
objShell = null;
}
catch (e) {
////////////////////////
}
}

/*
 * 创建文件并写入内容
 */
function CreateFile()
{
   var fso, tf;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   tf = fso.CreateTextFile("c:\\testfile.txt", true);
   // 写一行,并且带有新行字符。
   tf.WriteLine("Testing 1, 2, 3.") ;
   // 向文件写三个新行字符。  
   tf.WriteBlankLines(3) ;
   // 写一行。
   tf.Write ("This is a test.");
   tf.Close();
}

 

 

表格单元格宽度的强制固定与网页对屏幕分辩率的自适应

今天,在完善一个原来项目的过程中,实现了两个想法:一个是表格单元格宽度的强制固定,另一个是网页对屏幕分辨率的自适应。下面分别介绍一下。

一、表格单元格宽度的强制固定

曾经碰到一个非常头疼的问题:一个table拆分为两个后,如何让两个table中的各个列精确对齐,看起来如同一个表。

这个问题,初想起来是蛮简单的:只要给两个table都添加相同的一堆<col>不就行了?

但实际操作起来却发现存在这样的问题:表格会根据单元格中填充内容的多少自动调整表格。

后来,我尝试着将table的各列的宽度直接作为行内style进行定义,结果也一样,表格仍然自动调整。

这里不再详述问题的解决过程。将几点重要经验分享给大家:

1、单元格的溢出处理
[css]
table{
width:1000px;
table-layout:fixed;
}
td{
overflow:hidden;
text-overflow:ellipsis;
}
[/css]

2、根据框模型,仔细分析宽度组成。这里重点观察:width是否如你所想的,包含了border、padding等。

小技巧:很多浏览器自带调试工具,用调试工具进行查看能发现意想不到的问题!

二、网页对屏幕分辩率的自适应

此项目要求在不同分辨率的屏幕上具有较为严格的一致性。这里给出解决思路供大家参考。

1、头部HEAD
[html]


[/html]
2、为要求的每种分辨率分别创建一个css文件

这些文件中只包含各分辨率下不同的部分,相同部分放在style.css中。

命名方式参考:style_pack_1920_1080.css, style_pack_1024_768.css。

3、利用js进行css文件引入控制

给出jquery代码:
[javascript]
function ajust_to_screen(){
var width = parseInt( $(‘body’).css(‘width’) );
var css_pack_file;
switch( width ){
case 1024:
css_pack_file = ‘style_pack_1024_768.css’;
break;
case 1920:
css_pack_file = ‘style_pack_1920_1080.css’;
break;
default:
css_pack_file = ‘style_pack_1920_1080.css’;
break;
}
$(‘style_pack’).attr( ‘href’, css_pack_file );
}
[/javascript]