PHP代码安全性问题的建议

PHP代码安全性问题的建议

PHP包括其他任何网络编程语言的安全性,具体表现在本地安全性和远程安全性两个方面,这里我们应该养成如下的几个习惯确保我们的PHP程序本身是安全的。
1、 验证用户输入的任何数据,保证PHP代码的安全
这里有一个技巧就是使用白名单,所谓白名单就是说:我们要求用户的数据应该是这样的,例如我们要求用户的输入是一个数字,我们就只检验这个值是否是一个数字就行了,而不必检验他到底是什么——其实他有可能是个恶意脚本。

对于这个检验我们不能只在客户端的javascript进行,战地认为JS只是为了提高来访用户的体验而产生的,而不是验证的工具。因为任何一个来访的用户都可能会,也有可能无意间就禁用了客户端脚本的执行,从而跳过这层验证。所以我们必须在PHP的服务器端程序上检验这些数据。

2、 保护数据库的安全——对即将运行于数据库的Sql语句进行安全性预处理。
任何时候都要对执行前的Mysql语句,进行mysql_real_escape_string操作——该函数的用法请参考PHP手册。诸多PHP的数据库抽象层例如ADODB都提供了类似的方法。

3、 不要依赖不该依赖的PHP设置——环境有时候不可靠
不依赖,magic_quotes_gpc=On,在程序编制的过程,尽量关闭这个配置选项,任何时候判断这个选项后再对用户输入的数据进行处理。切记——PHP v6 中将会删除这个选项。尽量在合适的时候使用addcslashes 系列函数——请参考手册

4、 验证数据来源,避免远程表单提交
不要使用$_SERVER['HTTP_REFERER']这个超级变量来检查数据的来源地址,一个很小的菜鸟黑客都会利用工具来伪造这个变量的数据,尽可能利用Md5,或者rand等函数来产生一个令牌,验证来源的时候,验证这个令牌是否匹配。

5、 保护会话数据,特别是Cookies
Cookie是保存在用户的计算机上的,保存之后任何用户都有可能出于某种原因更改他,我们必须对敏感数据进行加密处理。Md5、sha1都是个不错的加密方法。

6、 利用htmlentities()预防XSS攻击
对用户可能输入脚本语言的地方的数据进行htmlentities()操,将多数可以产生程序错误的用户输入进行实体化。记住要遵循第一个习惯:在 Web 应用程序的名称、电子邮件地址、电话号码和帐单信息的输入中用白名单中的值验证输入数据。

时间: 2024-11-06 09:44:25

PHP代码安全性问题的建议的相关文章

java代码安全性

java代码安全性 java代码安全性 Java 如何保证编写的代码是安全可靠的呢? (1):第一关:编写的代码首先要被编译成为 class 文件,如果代码写得有问题,编译期间就会发现,然后提示有编译错误,无法编译通过. (2):第二关:通过编译关后,在类装载的时候,还会进行类装载检查,把本机上的类和网络资源类相分离,在调入类的时候进行检查,因而可以限制任何"特洛伊木马"的应用. (3):第三关:类装载后,在运行前,还会进行字节码校验,以判断你的程序是安全的. (4):第四关:如果你的

轻松审计代码安全性,Windows 10有妙招

本文讲的是轻松审计代码安全性,Windows 10有妙招,如果你是软件开发人员,又希望自己开发的软件安全性高一点,那么当前的Windows 10企业内部预览版(10.0.16253)中就有一个功能可以做到, 当然我无法保证未来版本中它是否还会存在,但我想这可能对你非常有用. 它的位置在"设置 – > Windows Defender – > Windows Defender安全中心 – >应用程序和浏览器控制 – >漏洞保护设置"中,你可以为整个系统或特定程序启

谈谈国内三大PHP播客系统代码试用体验和建议

谈谈国内三大PHP播客系统代码试用体验和建议 最近准备弄个播客玩玩,便找了一个PHP的开源博客系统,本人先申明下对网站开发不了解,说的也许就是个人自见.不足之处请指正.请勿见笑,欢迎交流,QQ:147468. 先测试了个西安的VICWORL系统,觉得不错,就是商业授权版才开放很多功能,但是就目前来说是我见到最好的播客系统.如果没有免费版本人将愿意使用商业版,它的测试站是http://www.vlog8.net/,据说马上开发针对虚拟主机的系统,也是个好消息. 第二是开发DISCUZ论坛的康盛创想

《编写高质量代码:改善c程序代码的125个建议》—— 导读

前 言 为什么写作本书 众所周知,C语言是一门既具有高级语言特点,又有汇编语言特点的通用计算机编程语言,无论是操作系统(如Microsoft Windows.Mac OS X.Linux和UNIX等).嵌入式系统与普通应用软件,还是目前流行的移动智能设备开发,随处都可以看见它依然矫健的身影.它能够轻松地应用于各类层次的开发中,从设备驱动程序和操作系统组件到大规模应用程序,它都能够很好地胜任.毋庸置疑,它是二十几年来使用最为广泛.生命力最强的编程语言,它的设计思想也影响了众多后来的编程语言,例如C

剖析SQL Server2005 SQLCLR代码安全性

提要 在SQL Server 2005内运行.NET框架代码是一件令人激动的事情还是一种威胁?本系列文章将全面探讨这类SQLCLR代码的安全问题,以便开发人员和DBA都能够有所借鉴. 一.引言 编写运行于宿主在任何环境下的CLR中的.NET代码的主要优点之一是代码存取安全(CAS). CAS提供了一种基于代码的而不是基于用户的认证模式以预防各种代码的入侵问题.但是,这种安全模式如何与SQL Server 2005自己的新的增强的安全特征共存呢?默认情况下,你的.NET代码是比较安全的:但是,这两

关于.net的代码安全性

安全|安全性 大家都知道.net在编译后得到IL中间代码,但使用ILDASM可以很容易地反汇编成一个文本文件,这个文本文件比较容易看懂,还可以修改后使用ILASM重新编译成EXE文件.这个问题怎么解决,我想是广大.net爱好者关心的事情 对于不同的场合有不同的解决方案: 1.webservice或者remote方式调用  将核心代码和数据放到你的服务器上2.Jeffrey Richter说:如果有非常决定性的代码的话,可以考虑用Native Code 的DLL+Interop,如果你认为Nati

编写出色CSS代码的13个建议

CSS学起来并不难,但在大型项目中,就变得难以管理,特别是不同的人在CSS书写风格上稍有不同,团队上就更加难以沟通,为此总结了一些如何实现高效整洁的CSS代码原则: 1. 使用Reset但并非全局Reset 不同浏览器元素的默认属性有所不同,使用Reset可重置浏览器元素的一些默认属性,以达到浏览器的兼容.但需要注意的是,请不要使用全局Reset: *{ margin:0; padding:0; }  这不仅仅因为它是缓慢和低效率的方法,而且还会导致一些不必要的元素也重置了外边距和内边距.在此建

编写现代CSS代码的20个建议

明白何谓Margin Collapse 不同于其他很多属性,盒模型中垂直方向上的Margin会在相遇时发生崩塌,也就是说当某个元素的底部Margin与另一个元素的顶部Margin相邻时,只有二者中的较大值会被保留下来,可以从下面这个简单的例子来学习: .square {         width: 80px;         height: 80px;     }       .red {         background-color: #F44336;         margin-bo

AngularJS之代码风格36条建议【一】(九)

前言 其实在新学一门知识时,我们应该注意下怎么书写代码更加规范,从开始就注意养成一个良好的习惯无论是对于bug的查找还是走人后别人熟悉代码都是非常好的,利人利己的事情何乐而不为呢,关于AngularJS中的代码风格分为几节来阐述.希望对打算学习AngularJS的新手或者已经在路上的老手有那么一丢丢的帮助也是可以的. 普遍规则 tips 01(定义一个组件脚本文件时,建议此文件的代码少于400行) (1)有利于单元测试和模拟测试. (2)增加可读性.可维护性.避免和团队在源代码控制上的冲突. (