PHP中的一般安全策略

PHP 是一种非常强大的语言,其解释器不管是作为 WEB 服务器的模块还是单独地以 CGI 程序的形式运行,都能够访问文件,执行命令,或者建立到服务器的网络连接。在默认情况下,这些特性给在 WEB 上运行的机制带来了安全隐患。针对这一问题,PHP 被设计成一种更加安全的语言,使得其跟 Perl 和 C 语言比起来,更适合用来编写 CGI 程序。加上其有良好的编译时和运行时设置选项以及适当的代码编写规则,PHP 能够为您找到您真正需要的自由与安全的结合点。

由于我们可以在很多不同的方面利用 PHP,因此它有很多设置选项来控制其行为。一组庞大的可选参数能够保证您可以将 PHP 用于许多不同的目的,但这同时也意味着这些参数和服务端配置的组合会带来一些安全问题。

PHP 的配置与其代码相比,有着同样的灵活性。PHP 可以用来建立完整的服务端应用程序,拥有所有外壳用户的权限;它也可以在被严格控制的环境下用作一个简单的服务端包含,仅承担很小的风险。您如何建立该环境,以及其安全性如何,在很大程度上取决于 PHP 的开发者。

本系列文章将以一些总的安全建议开始,解释不同的配置选项组合以及它们能够被安全的使用的情况,然后针对不同的安全等级要求,描述一些在编写代码过程中采取的安全策略。

一般策略
一个绝对安全的系统是不可能实现的,因此一个安全策略的核心通常都是寻求风险与可用性之间的平衡点。如果用户提交的每个变量都需要两种生物统计学的校验(例如视网膜扫描和指纹检验),那么我们将会需要进行极其高阶的计算。这还可能造成我们需要花费半个小时来填写一个及其繁琐的表单,使得用户更倾向于寻找一些捷径来绕过这些安全机制。

最好的安全策略通常能够不那么明显地适应环境的需求,它不会妨碍用户完成他们的工作,也不会使代码编写员面过分负担复杂的情形。实际上,一些安全攻击的成功正是这种过分冗杂的安全机制随着时间逐渐毁坏的结果。

我们应该记住这样一句很有价值得话:一个系统充其量仅相当于一条锁链中最薄弱的环节。如果所有的事务的时间、地点、类型等信息都被详细的写入日志,但对用户的认证仅仅只是基于一个单一的 cookie,那么将用户记入事务日志的有效性就被严重地削弱了。

请记住,即时是对最简单的页面,您也不可能测试到所有的可能性。您所预料到的输入可能和来自于一个不满的雇员,一个黑客用数月时间或者一只不小心踩到键盘的猫所进行的输入相去甚远。这也是为什么说我们最好能够从逻辑的全局上来审视我们的代码,从而辨别哪里出现不可预料的数据,然后再考虑如何修改、减少或者放大它们。

Internet 上充满了想试图通过破坏你的代码、黑掉你的网站、发布不适合的内容等途径来扬名立万的人。不管你的网站是大还是小,只要你在线,有一部可以连接得到的服务器,你就能成为目标。许多黑客程序并不分辩网站的大小,他们只是简单地在一大片 IP 范围内搜罗牺牲者。我们要尽可能不要使自己成为其中的一员.

时间: 2024-10-29 10:54:18

PHP中的一般安全策略的相关文章

理解网卡工作模式中的混杂模式

混杂模式,英文名称为Promiscuous Mode,它是指一台机器能接收所有经过它的数据流,而不论数据流中包含的目的地址是否是它自己,此模式与非混杂模式相对应.在非混杂模式下,网络适配器仅侦听自己的 MAC 地址上的流量.在混杂模式下,它可以侦听所有数据包.默认情况下,网络适配器设置为非混杂模式.混杂模式是数据链路层(L2)中的一个安全策略. 混杂模式下的网卡能接收所有通过它的数据流,不管是什么格式.地址(任何一个在同一冲突域中传输的所有包),在接收到数据包后由网络层判断确定这个包如何处理,例

添加IP安全策略 远离系统Ping漏洞的威胁

懂得网络的人对于Ping这个最基本的网络命令一定很熟悉,它是一个非常好用的TCP/IP工具.它可以向你提供的地址发送一个小的数据包,然后侦听这台机器是否有“回答”.你可以使用机器的 Internet 地址,如:ping 192.78.222.81,或者也可使用机器名,如:ping MyComputer. 在使用Ping时,Ping工具程序发送一个ICMP(Internet Control Management Protocol,简称Internet控制管理协议)应答请求给对方,以验证另一台计算机

《Windows服务器配置与管理》 设置共享

1.在Vmare中克隆两台windows2008,虚拟机名称分别为"win2008-1"和"win2008-2": 2.网络设置为"仅主机模式": 3.设置两台虚拟机的IP,"win2008-1"IP为:192.168.1.1/24,"win2008-2"IP为:192.168.1.2/24: 4.设置两台虚拟机的计算机名,分别设置为"win2008-1"和"win2008-2

设置共享实验准备步骤

1.在Vmare中克隆两台windows2008,虚拟机名称分别为"win2008-1"和"win2008-2": 2.网络设置为"仅主机模式": 3.设置两台虚拟机的IP,"win2008-1"IP为:192.168.1.1/24,"win2008-2"IP为:192.168.1.2/24: 4.设置两台虚拟机的计算机名,分别设置为"win2008-1"和"win2008-2

局域网雨云蠕虫病毒的处理

最近跳槽换了家单位,300多台pc,2台文件共享服务器Server.PC的操作系统大部分是win7,少量是xp,Server的操作系统均为win2008 server R2,在Server上共享用户为everyone,共享和安全权限为完全控制.网络设备张核心为华为S5348,但是未做任何配置,其他交换机使用的D-LINK 1024D或者1024T,清一色傻瓜式交换机.300多台电脑位于同一个广播域,ip地址范围是192.168.1.0一直到192.168.6.0,但是子网掩码是255.255.2

多元密码策略

在以前Windows Server 2003和之前的版本中,域安全策略只能使用一种,也就是你的域中只能存在一个安全策略:而无法针对不同的部门或个人设置不同密码策略,但是Windows Server 2008之后可以为不同的部门或个人设置不同的密码策略: 要求: 域功能级别必须是Windows Server 2008或以上 是Domain Admins组中的成员 1.点击"开始-管理工具-ADSI编辑器" 2.右击"ADSI编辑器",选择"连接到"

文件无法共享,报错“登录失败:未授予用户在此计算机上的请求登陆类型”

文件共享报错 在组策略中设置,安全策略. 开始--运行--gpedit.msc--计算机配置--windows设置--安全设置--本地策略--“用户权力指派”,双击右边的“从网络访问此计算机”,保证其中有Everyone,双击左边的“拒绝从网络访问此计算机”,保证其是空的. 还有报错 共享用户添加guest后可以了

新时代 DevOps 需求下,我们该如何保障服务的安全?

[编者按]时下,传统安全策略显然已无法支撑 DevOps 环境的敏捷需求.那么,对于一个决策者来说,你又该如何实现 DevOps 速度与安全的兼得?本篇译自 Dzone 的一篇运维文章,题为「Security Breaks DevOps – Here's How to Fix It」,由 OneAPM 工程师编译整理. 现在,通信.协作.抽象.自动化.流程等理念已成为快速 DevOps 操作的基础.同时,在虚拟基础设施和 IaaS(基础设施即服务)的冲击下,手动的配置和管理已然不再可行--它需要

linux sudo 命令

简单的说,sudo 是一种权限管理机制,管理员可以授权于一些普通用户去执行一些 root 执行的操作,而不需要知道 root 的密码.严谨些说,sudo 允许一个已授权用户以超级用户或者其它用户的角色运行一个命令.当然,能做什么不能做什么都是通过安全策略来指定的.sudo 支持插件架构的安全策略,并能把输入输出写入日志.第三方可以开发并发布自己的安全策略和输入输出日志插件,并让它们无缝的和 sudo 一起工作.默认的安全策略记录在 /etc/sudoers 文件中.而安全策略可能需要用户通过密码