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-09-02 20:54:56

php中一些安全性防止问题建义的相关文章

VoIP应用中的安全性挑战

随着 IP 语音(VoIP)技术在全球电信市场的不断普及,对服务供应商.设备制造商以及最终用户而言,性能 改善.成本降低以及功能支持使 VoIP 成为一种极富吸引力的事物.由于人们对 VoIP 的兴趣日益增加,语音通信的安全性有可能发展成为 VoIP 解决方案的一项关键要求.基于分组的通信对安全风险尤其脆弱,这些风险包括:数据包监听语音"窃听".伪造网络 ID 的未付费服务使用以及操纵数据包造成的服务中断等.尽管已经包含了安全特性的VoIP实施尚为数不多,但我们目前已将几种标准纳入了考

Ajax在进行web开发中的安全性分析

在进行web开发中ajax的安全性如何呢?现在浏览器允许用户提高他们的安全等级,关闭 JavaScript 技术,禁用浏览器中的任何选项.在这种情况下,代码无论如何都不会工作.此时必须适当地处理问题,这需要单独的一篇文章来讨论,要放到以后了(这个系列够长了吧?不用担心,读完之前也许您就掌握了).现在要编写一段健壮但不够完美的代码,对于掌握 Ajax 来说就很好了.以后我们还将讨论更多的细节. Ajax 世界中的请求/响应 现在我们介绍了 Ajax,对XMLHttpRequest对象以及如何创建它

如何提升BYOD企业环境中的安全性

对于大多数人来说,移动设备及私人设备已成为生活甚至身体的延伸.大多数人随时随地携带智能手机.当我们找不到他们的时候,我们会感到很失落. 基本上,我们都始终启用并连接到互联网上.随时随地连接的概念不仅进入了个人生活中,也进入了工作生活中. 由于提升员工工作效率的原因,自带设备(BYOD)政策已经变得很普及也模糊了私人生活和工作生活的界限.员工将他们的私人设备用于工作相关活动以及正常工作时间内外通信交流已成为新常态. 那么为什么这么多人都第一时间地赶上BYOD的浪潮? 提升工作效率.随时随地登录并回

在虚拟基础架构中实现安全性、负载平衡和Anti-collocation规则

在本文中,我们查看设置一个具有高可用性 (HA) 和负载平衡的环境的最常见用例: 负载平衡使您能够将http://www.aliyun.com/zixun/aggregation/13999.html">工作负载分散在多个实例上,从而提高吞吐量和实现冗余. 用例:跨两个运行 Apache HTTP Server 或 IBM HTTP Server 的 Web 服务器的负载平衡.您可以使用自己的 Web 服务器对来自应用服务器的数据执行负载平衡和缓存.注意:不仅可以对 HTTP 执行负载平衡

ASP .NET 中的身份验证:.NET 安全性指导

安全|安全性 摘要本文讨论了设计服务器应用程序时考虑安全性的重要性.Internet Information Services 和 ASP .NET 均提供了安全模型,以便您对用户进行适当的身份验证,并在应用程序中获得正确的安全环境. -------------------------------------------------------------------------------- 目录简介安全性考虑IIS 和 ASP .NET 之间的关系身份验证方法Web 服务的安全性代码访问安全

在Serv-U中使用SSL证书增强FTP服务器安全性图文设置方法_FTP服务器

为了保证特殊环境下的数据安全,有时是有必要启用SSL功能的.下面笔者以Serv-U服务器为例,介绍如何启用SSL加密功能. 创建SSL证书 要想使用Serv-U的SSL功能,当然需要SSL证书的支持才行.虽然Serv-U 在安装之时就已经自动生成了一个SSL证书,但这个默认生成的SSL证书在所有的Serv-U服务器中都是一样的,非常不安全,所以我们需要手工创建一个新的SSL证书. 以Serv-U6.0汉化版为例,在"Serv-U管理员"窗口中,展开"本地服务器→设置"

浅析私有存储云在企业中优势与安全性

文章讲的是浅析私有存储云在企业中优势与安全性,随着数据不断以指数形式增加,人们已经不可能降低数据的存储量,因此,多数企业为了提高系统效率,对已有基础设施进行日常维护和升级,以及对现有的基础架构引用动态架构技术,以提高可伸缩性.这包括将服务器和存储技术混合.非破坏性地添加和移除存储设备以及随需应变;在不宕机的情况下转移数据的能力;提供多层次业务服务的能力,以在整个企业内部满足可用性或者合规性的要求. 实现这些目标需要一个灵活.易扩展.易管理的存储技术.对于很多企业来说,私有存储云就是解决发,通过对

向云环境迁移过程中的数据安全性问题

2011年4月,亚马逊公司位于北弗吉尼亚州的云计算中心宕机,这导致使用亚马逊服务的回答服务Quora.新闻服务Reddit.Hootsuite和位置跟踪服务FourSquare在内的一些网站受到了影响.此次中断持续将近4天.为此亚马逊为宕机事件向用户发表了5700多字的道歉信,并且为受到影响的用户提供10天服务的点数. 2011年3月,谷歌邮箱爆发大规模的用户数据泄漏事件,大约有15万Gmail用户在周日早上发现自己的所有邮件和聊天记录被删除,部分用户发现自己的帐户被重置,谷歌表示受到该问题影响

[收藏]使用Reporting Services中的窗体身份验证

services 使用 Reporting Services 中的窗体身份验证发布日期: 8/18/2004 | 更新日期: 8/18/2004Microsoft Corporation 适用范围:Microsoft SQL Server 2000 Reporting Services 摘要:了解有关 Reporting Services 安全扩展方面的知识,着重学习窗体身份验证.此外,下载和部署 Reporting Services 的窗体身份验证扩展示例. 要安装示例代码,请下载 Forms