201411-11 程序员杂谈之做个环保主义的程序员 十多年前刚走入社会工作的时候,那时的中国软件开发根本没有什么版本管理,也没有什么编程规范,软件开发相比起今天来说非常地混乱,那时仅凭自己的一些学习总结了一些C语言编程中的好的小笔记,后来,这些笔记写成了一篇叫《编程修养》的文章。今天,又有些感触,想把这个话题扩大一下,从“个人修养”扩大到“环境保护”,所谓,穷则独善其身,富则达济天下,今天的技术人员比十多年前在技术和环境上都富有了许多,所以,也应该... 继续阅读 >
201411-07 CentOS邮件服务器搭建系列——用 SSL 对邮件加密的支持 前言通常,我们发送的邮件在传输过程中都采用明文传输。当发送重要信息的时候,仍然存在邮件被第三方获取,泄露隐私及密码等等的安全隐患。在Web服务器中,通过用SSL实现对HTTPS协议的支持,实现了对传输内容的加密,在邮件服务器中,我们也同样能够依靠SSL来实现对邮件的加密,从而提高通过用邮件传递信息的安全性。证书与密钥的确认在这里,可以为邮件服务器建立新的证书,但为了管理上的便利性,我们直接引用We... 继续阅读 >
201411-07 Windows下Apache配置SSL以支持https及出错的解决办法 SSLSSL证书通过在客户端浏览器和Web服务器之间建立一条SSL安全通道(Securesocketlayer(SSL)安全协议是由NetscapeCommunication公司设计开发。该安全协议主要用来提供对用户和服务器的认证;对传送的数据进行加密和隐藏;确保数据在传送中不被改变,即数据的完整性,现已成为该领域中全球化的标准。由于SSL技术已建立到所有主要的浏览器和WEB服务器程序中,因此,仅需安装服务器证书就可以激活该功能了)。即通过它可以激活SSL... 继续阅读 >
201411-07 Yii框架官方指南系列17——使用表单:创建模型 在编写表单所需的HTML代码之前,我们应该先确定来自最终用户输入的数据的类型,以及这些数据应符合什么样的规则。模型类可用于记录这些信息。正如模型章节所定义的,模型是保存用户输入和验证这些输入的中心位置。取决于使用用户所输入数据的方式,我们可以创建两种类型的模型。如果用户输入被收集、使用然后丢弃,我们应该创建一个 表单模型;如果用户的输入被收集后要保存到数据库,我们应使用一个 ActiveRecord 。... 继续阅读 >
201411-07 PHP安全之简介和总则 简介PHP作为一种强大的语言,无论是以模块还是 CGI 的方式安装,它的解释器都可以在服务器上访问文件、运行命令以及创建网络连接等。这些功能也许会给服务器添加很多不安全因素,但是只要正确地安装和配置PHP,以及编写安全的代码,那么PHP相对于Perl和C来说,是能创建出更安全的CGI程序的。而且,也可以在可用性和安全性之间找到一个很好的平衡点。PHP可能会被用在很多不同的方面,因此,PHP内置的选项... 继续阅读 >
201411-07 PHP安全之以CGI 模式安装时可能遇到的攻击及解决办法 如果不想把PHP嵌入到服务器端软件(如Apache)作为一个模块安装的话,可以选择以 CGI 的模式安装。或者把PHP用于不同的CGI封装以便为代码创建安全的chroot和setuid环境。这种安装方式通常会把PHP的可执行文件安装到web服务器的cgi-bin目录。尽管PHP可以作为一个独立的解释器,但是它的设计使它可以防止下面类型的攻击:访问系统文件:http://my.host/cgi-bin/php?/etc/passwd 在URL请求的问号(?)后面... 继续阅读 >
201411-07 PHP安全之以Apache模式安装时可能遇到的攻击及解决办法 当PHP以Apache模块方式安装时,它将继承Apache用户(通常为“nobody”)的权限。这对安全和认证有一些影响。比如,如果用PHP来访问数据库,除非数据库有自己的访问控制,否则就要使“nobody”用户可以访问数据库。这意味着恶意的脚本在不用提供用户名和密码时就可能访问和修改数据库。一个webSpider也完全有可能偶然发现数据库的管理页面,并且删除所有的数据库。可以通过Apache认证来避免此问题,或者用LDAP、.htac... 继续阅读 >
201411-07 PHP安全之文件系统安全及防范措施 PHP遵从大多数服务器系统中关于文件和目录权限的安全机制。这就使管理员可以控制哪些文件在文件系统内是可读的。必须特别注意的是全局的可读文件,并确保每一个有权限的用户对这些文件的读取动作都是安全的。PHP被设计为以用户级别来访问文件系统,所以完全有可能通过编写一段PHP代码来读取系统文件如/etc/passwd,更改网络连接以及发送大量打印任务等等。因此必须确保PHP代码读取和写入的是合适的文件。请看下面的代码... 继续阅读 >
201411-07 PHP安全之文件系统安全——Null字符问题 由于PHP的文件系统操作是基于C语言的函数的,所以它可能会以您意想不到的方式处理Null字符。Null字符在C语言中用于标识字符串结束,一个完整的字符串是从其开头到遇见Null字符为止。以下代码演示了类似的攻击:Example#1会被Null字符问题攻击的代码<?php$file=$_GET['file'];//"../../etc/passwd\0"if(file_exists('/home/wwwrun/'.$file.'.php')){//文件/home/wwwrun/../../etc/passw... 继续阅读 >
201411-07 PHP安全之数据库安全——SQL注入及预防措施 很多web开发者没有注意到SQL查询是可以被篡改的,因而把SQL查询当作可信任的命令。殊不知道,SQL查询可以绕开访问控制,从而绕过身份验证和权限检查。更有甚者,有可能通过SQL查询去运行主机操作系统级的命令。直接SQL命令注入就是攻击者常用的一种创建或修改已有SQL语句的技术,从而达到取得隐藏数据,或覆盖关键的值,甚至执行数据库主机操作系统命令的目的。这是通过应用程序取得用户输入并与静态参数组合成SQL... 继续阅读 >
201411-07 PHP安全之数据库安全——设计、连接和加密 设计数据库第一步一般都是创建数据库,除非是使用第三方的数据库服务。当创建一个数据库的时候,会指定一个所有者来执行和新建语句。通常,只有所有者(或超级用户)才有权对数据库中的对象进行任意操作。如果想让其他用户使用,就必须赋予他们权限。应用程序永远不要使用数据库所有者或超级用户帐号来连接数据库,因为这些帐号可以执行任意的操作,比如说修改数据库结构(例如删除一个表)或者清空整个数据库的内容。应该为程... 继续阅读 >
201411-07 PHP安全之错误报告 对于PHP的安全性来说错误报告是一把双刃剑。一方面可以提高安全性,另一方面又有害。攻击系统时经常使用的手法就是输入不正确的数据,然后查看错误提示的类型及上下文。这样做有利于攻击者收集服务器的信息以便寻找弱点。比如说,如果一个攻击者知道了一个页面所基于的表单信息,那么他就会尝试修改变量:Example#1用自定义的HTML页面攻击变量<formmethod="post"action="attacktarget?username=badfoo&password... 继续阅读 >
201411-07 PHP安全之使用 Register Globals 本特性已自PHP5.3.0起废弃并将自PHP5.4.0起移除。可能 PHP 中最具争议的变化就是从 PHP 4.2.0 版开始配置文件中 PHP 指令 register_globals 的默认值从on改为off了。对此选项的依赖是如此普遍以至于很多人根本不知道它的存在而以为 PHP 本来就是这么工作的。本节会解释用这个指令如何写出不安全的代码,但要知道这个指令本身没有不安全的地方,误用才会。当... 继续阅读 >
201411-07 PHP安全之用户提交的数据 很多PHP程序所存在的重大弱点并不是PHP语言本身的问题,而是编程者的安全意识不高而导致的。因此,必须时时注意每一段代码可能存在的问题,去发现非正确数据提交时可能造成的影响。Example#1危险的变量用法<?php//从用户目录中删除一个文件,或者……能删除更多的东西?unlink($evil_var);//记录用户的登陆,或者……能否在/etc/passwd添加数据?fwrite($fp,$evil_var);//执行一些普通的命... 继续阅读 >
201411-07 PHP安全之魔术引号——什么是魔术引号以及如何使用 注:魔术引号特性已自PHP5.3.0起废弃并将自PHP5.4.0起移除。什么是魔术引号当打开时,所有的 '(单引号),"(双引号),\(反斜线)和 NULL 字符都会被自动加上一个反斜线进行转义。这和 addslashes() 作用完全相同。一共有三个魔术引号指令:magic_quotes_gpc 影响到 HTTP 请求数据(GET,POST和COOKIE)。不能在运行时改变。在 PHP 中默认值为 on。magic_quotes_runtime 如果打开的话,大部份从外部... 继续阅读 >
201411-07 PHP安全之隐藏PHP脚本扩展名 一般而言,通过隐藏的手段提高安全性被认为是作用不大的做法。但某些情况下,尽可能的多增加一份安全性都是值得的。一些简单的方法可以帮助隐藏PHP,这样做可以提高攻击者发现系统弱点的难度。在 php.ini 文件里设置expose_php=off,可以减少他们能获得的有用信息。另一个策略就是让web服务器用PHP解析不同扩展名。无论是通过 .htaccess 文件还是Apache的配置文件,都可以设置能误导攻击者的文件扩展名:Exampl... 继续阅读 >