确保PHP安全的四条安全规则
有关PHP
安全的几条规则
规则 1:绝不要信任外部数据或输入
关于 Web 应用程序安全性,必须认识到的第一件事是不应该信任外部数据。外部数据(outside data) 包括不是由程序员在 PHP
代码中直接输入的任何数据。在采取措施确保安全之前,来自任何其他来源(比如 GET 变量、表单 POST、数据库、配置文件、会话变量或
cookie)的任何数据都是不可信任的
例如,下面的数据元素可以被认为是安全的,因为它们是在 PHP
中设置的。
清单 1. 安全无暇的代码
以下为引用的内容:
<?php
$myUsername = ‘tmyer’;
$arrayUsers =
array(’tmyer’, ‘tom’, ‘tommy’);
define(”GREETING”, ‘hello there’ .
$myUsername);
?>
但是,下面的数据元素都是有瑕疵的。
清单 2. 不安全、有瑕疵的代码
以下为引用的内容:
<?php
$myUsername = $_POST['username'];
//tainted!
$arrayUsers = array($myUsername, ‘tom’, ‘tommy’);
//tainted!
define(”GREETING”, ‘hello there’ . $myUsername);
//tainted!
?>
为 什么第一个变量 $myUsername 是有瑕疵的?因为它直接来自表单
POST。用户可以在这个输入域中输入任何字符串,包括用来清除文件或运行以前上传的文件的恶意命令。您可能会问,“难道不能使用只接受字母 A-Z
的客户端(Javascrīpt)表单检验脚本来避免这种危险吗?”是的,这总是一个有好处的步骤,但是正如在后面会看到的,任何人都可以将任何表单下载
到自己的机器上,修改它,然后重新提交他们需要的任何内容。
解决方案很简单:必须对 $_POST['username'] 运行清理代码。如果不这么做,那么在使用 $myUsername
的任何其他时候(比如在数组或常量中),就可能污染这些对象。
对用户输入进行清理的一个简单方法是,使用正则表达式来处理它。在这个示例中,只希望接受字母。将字符串限制为特定数量的字符,或者要求所有字母都是小写的,这可能也是个好主意。
清单 3. 使用户输入变得安全 www~phperz~com
以下为引用的内容:
<?php
$myUsername = cleanInput($_POST['username']);
//clean!
$arrayUsers = array($myUsername, ‘tom’, ‘tommy’);
//clean!
define(”GREETING”, ‘hello there’ .
相关文档:
fopen() 函数用于在 PHP 中打开文件。
此函数的第一个参数含有要打开的文件的名称,第二个参数规定了使用哪种模式来打开文件:
<?php
$file=fopen("welcome.txt","r");
?>
文件可能通过下列模式来打开:
r : 只读。指针定位在文件的开头,如果文件不会报错。
r+ : 读/写。指针定位在文件的开头,如 ......
basename: 返回不含路径的文件字符串。
chgrp: 改变文件所属的群组。
chmod: 改变文件的属性。
chown: 改变文件的拥有者。
clearstatcache: 清除文件状态快取。
copy: 复制文件。
delete: 无用的项目。
dirname: 取得路径中的目录名。
diskfreespace: 取得目录所在的剩余可用空间。
fclose: 关闭已打开的 ......
前几天在学习PHP的时候做了一个简单的数据增删改的程序,由于自己是第一次接触PHP所以在许多地方做的不到位,感觉很牵强,但是毕竟是花了时间的,所以现在贴出来。
1.完成增删查改的主页面:connsql.php
<h1>Data Insert Delete Update</h1>
<?php
//获得数据库连接
& ......
本篇文章转载网络,转载地址:http://blog.s135.com/read.php?366
Nginx
("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式 ......