PHP安全及相关

关注安全问题的重要性

看到的远非全部

阻止用户恶意破坏你的程式最有效却经常被忽略的方法是在写代码时就考虑它的可能性。留意代码中可能的安全问题是很重要的。考虑下边的旨在简化用PHP中写入大量文本文件的过程的实例函数:

<?php
function write_text($filename, $text="") {
static $open_files = array();
// 如果文件名空,关闭全部文件
if ($filename == NULL) {
foreach($open_files as $fr) {
fclose($fr);
}
return true;
}
$index = md5($filename);
if(!isset($open_files[$index])) {
$open_files[$index] = fopen($filename, "a+");
if(!$open_files[$index]) return false;
}
fputs($open_files[$index], $text);
return true;
}
?>

这个函数带有两个缺省参数,文件名和要写入文件的文本。

函数将先检查文件是否已被打开;如果是,将使用原来的文件句柄。否则,将自行创建。在这两种情况中,文本都会被写入文件。

如果传递给函数的文件名是NULL,那么所有打开的文件将被关闭。下边提供了一个使用上的实例。

如果开发者以下边的格式来写入多个文本文件,那么这个函数将清楚和易读的多。

让我们假定这个函数存在于一个单独的文件中,这个文件包含了调用这个函数的代码。

下边是一个这样的程式,我们叫它quotes.php:

<html><body>
<form action="<?=$_SERVER['PHP_SELF']?>" method="get">
Choose the nature of the quote:
<select name="quote" size="3">
<option value="funny">Humorous quotes</option>
<option value="political">Political quotes</option>
<option value="love">Romantic Quotes</option>
</select><br />
The quote: <input type="text" name="quote_text" size="30" />
<input type="submit" value="Save Quote" />
</form>
</body></html>
<?php
include_once('write_text.php');
$filename = "/home/web/quotes/{$_GET['quote']}";
$quote_msg = $_GET['quote_text'];
if (write_text($filename, $quote_msg)) {
echo "<center><hr><h2>Quote saved!</h2></center>";
} else {
echo "<center><hr><h2>Error writing quote</h2></center>";
}
write_text(NULL);
?>

时间: 2024-09-17 11:00:39

PHP安全及相关的相关文章

计算机网络原理相关面试问题

1.简单介绍OSI的七层网络模型,画图描绘,描述主要几层的各自作用.OSI(Open System Interconnect,开放系统互连)七层网络模型. TCP/IP四层模型和OSI七层模型 表1-1是 TCP/IP四层模型和OSI七层模型对应表.我们把OSI七层网络模型和Linux TCP/IP四层概念模型对应,然后将各种网络协议归类. 表1-1  TCP/IP四层模型和OSI七层模型对应表 OSI七层网络模型 Linux TCP/IP四层概念模型 对应网络协议 应用层(Applicatio

使用Putty的Telnet及SSH功能进行相关工作

说实话,我不习惯命令行的操作.但是有些工作必须要使用命令行才能完成操作.比如公司的网络设备,都是通过命令行. 唉,没有办法只能去适应了.先来说说Telnet吧.以前我认为Telnet因为是明文的方式进行传输,在实际工作中使用的比较少.但是目前看来我错了,而且错的很离谱呢. 公司很多的管理都是通过Telnet进行的. 除此之外,还有SSH.这个我还是知道的.相对于Telnet来说,SSH还是很安全的. 平时使用Telnet时,要么是使用本机自带的Telnet客户端.操作起来还行,但是前提是本机一定

数据库相关中间件收录集

数据库中间件 这里主要介绍互联网行业内有关数据库的相关中间件.数据库相关平台主要解决以下三个方面的问题: 为海量前台数据提供高性能.大容量.高可用性的访问 为数据变更的消费提供准实时的保障 高效的异地数据同步 应用层通过分表分库中间件访问数据库,包括读操作(Select)和写操作(update, insert和delete等,DDL, DCL).写操作会在数据库上产生变更记录,MySQL的变更记录叫binlog, Oracle的称之为redolog, 增量数据订阅与消费中间件解析这些变更,并以统

最通俗易懂的解读比特币相关原理

周末花时间看了一些比特币原理相关的资料,虽然不敢说把每个细节都完全搞懂了,不过整体思路和关键部分的主要原理还是比较明白.写一篇文章分享给大家.这篇文章的定位会比较科普,尽量用类比的方法将比特币的基本原理讲出来.这篇文章不会涉及算法和协议中比较细节的部分,打算后面会再写一篇程序员视角下的比特币原理,那里会从技术人员的视角对比特币系统中较为关键的数据结构.算法和协议进行一些讲解. 在这篇文章中我会给出一个虚拟的村庄叫"比特村",整个文章会以讲故事的方式,逐步告诉大家比特币提出的动机.解决了

WPF Graphics 相关类图

WPF 中 Graphics 相关的类有时候看起来比较晕,有些类的命名也比较相近,所以画出下面几个图,帮助记忆: 1. Geometry 几何图形   2. PathGeometry 路径几何图形   3. Shape   4. Drawing & Visual

文本框-匹配相关内容,就像邮箱一样

问题描述 匹配相关内容,就像邮箱一样 怎么实现在文本框里输入字符串并出现相关的字符串,并且点击出现的内容并在出入框中显示 解决方案 做一个表格,记录相关的内容,然后在输入的文本框里写代码,内容变化时过滤表格来实现你说的功能,用户选择表格中某一行时,把值赋到文本框里 解决方案二: 网页上的一种局部刷新东西搞的?匹配字符完后返回给div?纯属路过 解决方案三: 网页上的一种局部刷新东西搞的 ajax

调用函数-echart的 title相关问题

问题描述 echart的 title相关问题 echart怎么给title的link属性怎么调用函数,最后实现页面跳转

【android相关】【问题解决】R.java文件丢失

在进行android开发过程中,有时候,我们会遇到gen文件中R.java丢失的现象.重新build,或者clean工程,close并重新打开Project,但有时也没解决. 这可能是由于不小心把xml文件写错了,或者在编辑xml或者其他文件时候点击了run,或者clear过项目等...,反正,你会发现gen下面的R.java的文件找不到了. 其实,只要xml文件有问题,系统就不会给自动生成R.java文件,因为系统需要参照每个xml里的数据来生成R.java. 当然,如果项目较大,而layou

c++字符集相关,sprintf_s 工作方式

问题描述 c++字符集相关,sprintf_s 工作方式 sprintf_s 是如何进行格式化字符串检查的?在网上看见的例子:iRt = sprintf_s(szA 8%s"" L""和平""); // 乱码四个字节iRt = sprintf_s(szA 8%s""和平""); // 和平iRt = sprintf_s(szA 8%S"" L""和平"&qu

GIS相关技术之一:Symbol编辑器

前言 随着信息技术日新月异的高速发展,GIS技术也随之产生,为地理信息管理开创了新的模式.它的应用越来越广泛.当然这都不是本文讨论的东东!! 介绍 本文涉及的Symbol来源于ArcGis,所以只针对对GIS有一定经验的朋友与我共同学习.主要参照ArcGis--ArcObjects Developer Help. 使用说明:下面是对FreeMap工程的描述: 1.文件 FreeGis.dll // 主体对象库 Geometry.dll // 几何体对象库 Symbols.dll // Symbo