创建高安全性PHP网站的几个实用要点

技巧1:使用合适的错误报告

一般在开发过程中,很多程序员总是忘了制作程序错误报告,这是极大的错误,因为恰当的错误报告不仅仅是最好的调试工具,也是极佳的安全漏洞检测工具,这能让你把应用真正上线前尽可能找出你将会遇到的问题。

当然也有很多方式去启用错误报告。比如在 php.in 配置文件中你可以设置在运行时启用

启动错误报告

?


1

error_reporting(E_ALL);

停用错误报告

?


1

error_reporting(0);

技巧2:不使用PHP的Weak属性

有几个PHP的属性是需要被设置为OFF的。一般它们都存在于PHP4里面,而在PHP5中是不推荐使用的。尤其最后在PHP6里面,这些属性都被移除了。

注册全局变量

当 register_globals 被设置为ON时,就相当于设置Environment,GET,POST,COOKIE或者Server变量都定义为全局变量。此时你根本不需要去写 $_POST[‘username‘]来获取表单变量‘username‘,只需要‘$username‘就能获取此变量了。

那么你肯定在想既然设置 register_globals 为 ON 有这么方便的好处,那为什么不要使用呢?因为如果你这样做将会带来很多安全性的问题,而且也可能与局部变量名称相冲突。

比如先看看下面的代码:

?


1

2

3

4

if( !empty( $_POST[‘username‘] ) && $_POST[‘username‘] == ‘test123′ && !empty( $_POST[‘password‘] ) && $_POST[‘password‘] == “pass123″ )

{

$access = true;

}

如果运行期间, register_globals 被设置为ON,那么用户只需要传输 access=1 在一句查询字符串中就能获取到PHP脚本运行的任何东西了。

在.htaccess中停用全局变量

?


1

php_flag register_globals 0

在php.ini中停用全局变量

?


1

register_globals = Off

停用类似 magic_quotes_gpc, magic_quotes_runtime, magic_quotes_sybase 这些Magic Quotes

在.htaccess文件中设置

?


1

2

php_flag magic_quotes_gpc 0

php_flag magic_quotes_runtime 0

在php.ini中设置

?


1

2

3

magic_quotes_gpc = Off

magic_quotes_runtime = Off

magic_quotes_sybase = Off

技巧3:验证用户输入

你当然也可以验证用户的输入,首先必须知道你期望用户输入的数据类型。这样就能在浏览器端做好防御用户恶意攻击你的准备。

技巧4:避免用户进行交叉站点脚本攻击

在Web应用中,都是简单地接受用户输入表单然后反馈结果。在接受用户输入时,如果允许HTML格式输入将是非常危险的事情,因为这也就允许了JavaScript以不可预料的方式侵入后直接执行。哪怕只要有一个这样漏洞,cookie数据都可能被盗取进而导致用户的账户被盗取。

技巧5:预防SQL注入攻击

PHP基本没有提供任何工具来保护你的数据库,所以当你连接数据库时,你可以使用下面这个mysqli_real_escape_string 函数。

?


1

2

$username = mysqli_real_escape_string( $GET[‘username‘] );

mysql_query( “SELECT * FROM tbl_employee WHERE username = ’”.$username.“‘”);

好了,在这篇简短的文章中,我们阐述了几个开发过程中不能忽视的PHP安全性问题。但是最终是否使用,如何使用还是开发人员来决定的。希望这篇文章能帮助到你们。

时间: 2024-08-04 03:32:31

创建高安全性PHP网站的几个实用要点的相关文章

java处理高并发高负载类网站的优化方法

一:高并发高负载类网站关注点之数据库 没错,首先是数据库,这是大多数应用所面临的首个SPOF.尤其是Web2.0的应用,数据库的响应是首先要解决的. 一般来说MySQL是最常用的,可能最初是一个mysql主机,当数据增加到100万以上,那么,MySQL的效能急剧下降.常用的优化措施是M-S(主-从)方式进行同步复制,将查询和操作和分别在不同的服务器上进行操作.我推荐的是M-M-Slaves方式,2个主Mysql,多个Slaves,需要注意的是,虽然有2个Master,但是同时只有1个是Activ

构建高扩展性网站

如何构建高扩展性网站?     阅读目录 主要内容 化简方程 分布工作 横向扩展设计 使用正确的工具 不要做重复的工作 积极利用缓存 从错误中吸取教训 数据库原则 容错设计与故障控制 避免或分发状态 异步通信和消息总线 其他原则 参考 本篇通过阅读<高扩展性网站的50条原则>,总结出以下内容. 一方面博主没有实际的架构经验,另一方面知识面也不够宽阔,所以只能系统的总结书中的要点,并根据自己的理解做些归纳. 主要内容 本书从多个方面围绕高扩展性提出了50条建议,一个高扩展性的网站会随着业务的发展

高并发高流量的网站架构设计 (转)

Web2.0的兴起,掀起了互联网新一轮的网络创业大潮.以用户为导向的新网站建设概念,细分了网站功能和用户群,不仅成功的造就了一大批新生的网站,也极大的方便了上网的人们.但Web2.0以用户为导向的理念,使得新生的网站有了新的特点——高并发,高流量,数据量大,逻辑复杂等,对网站建设也提出了新的要求. 本文围绕高并发高流量的网站架构设计问题,主要研究讨论了以下内容: 首先在整个网络的高度讨论了使用镜像网站,CDN内容分发网络等技术对负载均衡带来的便利及各自的优缺点比较.然后在局域网层次对第四层交换技

高扩展性网站的50条原则

<高扩展性网站的50条原则>,利用一天半的时间快速浏览总结的电子书,对网站的建设有一个原则性的把握,书中提到的大部分原则现在已成为互联网行业的共识,但并不妨碍我们重新整理分类,从全局层面把控高扩展性网站的建设思路,文中的每一条尽管高度凝练,但都值得细细品味.完成于2015年6月11日11:02:19. (一)化简方程 不要过度设计:基于成本的考虑,只设计能满足要求的系统即可,过于理想化的设计不利于系统的维护与成本控制: 设计时考虑扩展性:设计20倍的容量,实现3倍的容量,部署1.5倍的容量,即

【转】如何构建高扩展性网站?

本篇通过阅读<高扩展性网站的50条原则>,总结出以下内容. 一方面博主没有实际的架构经验,另一方面知识面也不够宽阔,所以只能系统的总结书中的要点,并根据自己的理解做些归纳. 主要内容 本书从多个方面围绕高扩展性提出了50条建议,一个高扩展性的网站会随着业务的发展.用户的增加,自由的扩展架构,从而轻松的应付网站的快速发展.下面看看本书的具体内容: 化简方程 1 不要过度的设计 过度的设计相当于给系统增加了复杂度与维护的成本.而这些过度的设计,在正常的使用中,却没有太大的作用.往往是设计者自己认为

思考如何做一个普通网站和高并发的网站

写写总结一下,分别用C#和Java如何构建一个普通网站和一个高并发.安全的网站. 构建一个普通网站的checklist:.net mvc:mvc+EF+mysqljava:主流仍然使用ssh2?纯前端如node.js的优势和缺点如何? 注意事项:基本架构,前端框架,数据库事务 脚本构建一个高并发的网站:基本架构上的调整:缓存的加入(如memcached等),多线程的使用,需不需要做成分布式结构(web service等),图片等静态资源的CDN网络:数据库表之间字段关联的设计,字段冗余的合理使用

利用这四大技巧 轻松打造高质量的网站内容

在制作网站的过程中,怎样为企业网站打造一些高质量的网站内容呢?因为高质量的内容可以提高网站的表现效果,而且可以吸引更多的流量,提升网站的权重.今天我们就来说一下网站制作过程中,怎样打造优质的内容.下面我们就一起来聊一下吧. 第一.为网站选择一个易记简短的域名.一个稳定的网站服务空间.易记简短的域名不仅方便用户可以很容易快速地记住你的网站.从搜索引擎收录网站的角度来看,对简单的域名也是比较感兴趣的.因此,很多企业网站在制作的时候一般都会选择com域名注册.而作为一个营销类型的网站,而且是想要打开网

NET Core环境并创建运行ASP.NET网站

kungge 在Windows系统搭建.NET Core环境并创建运行ASP.NET网站 微软于6月27日在红帽DevNation峰会上 正式发布了.NET Core 1.0.ASP.NET 1.0和Entity Framework Core 1.0,其将全部支持Windows.OS X和Linux操作系统.其中.NET Core最受瞩目,为一款跨平台.开源且模块化的.NET平台,可以用来搭建web应用.微服务.创立应用库和控制台. ASP.NET 5已被微软改成了 ASP.NET Core 1

大流量高并发量网站的之解决方案

一.对于网站访问速度影响的条件如下: 瓶颈主要有: 1.磁盘搜索 优化方法是:将数据分布在多个磁盘上 2.磁盘读/写 优化方法是:从多个磁盘并行读写. 3.CPU周期 优化方法:扩充内存 4.内存带宽 二.大流量高并发量网站的解决方案 1.确认服务器硬件是否足够支持当前的流量. 2.使用memcache缓存技术,将动态数据缓存到内存中,动态网页直接调用这些文件,而不必在访问数据库. 3.禁止外部的盗链. 4.外部网站的图片或者文件盗链往往会带来大量的负载压力,因此应该严格限制外部对自身图片或者文