background image

在你知道期望数据是有害的情况下仍然接受此数据的方法,此方法是安全漏洞的共同来源。有时,恶意
的用户能避开此种方法,例如,用空字符来掩盖坏输入的方法。如此的输入将通过检查,但是它仍然具
有坏的影响。
  当你验证任何输入时,你应当尽可能的严格。如果有一些没必要包含的字符,可能的话,你应该要
么去除那些无用的字符,要么完全拒绝输入。
  访问控制缺陷
  另一个缺陷,不一定限于 PHP 应用程序,但仍然是重要的,是访问控制的脆弱性类型。当你的应用
程序的某些部分的应用是限定于某些用户的时候,这种缺陷就出现了,如,一个允许更改配置设置或显
示敏感信息的管理页面。
  你应该检查每个你的 PHP 应用程序页面限制加载的用户的访问权利。如果你仅仅只检查在索引页面
的用户证书,那么一个恶意的用户能直接进入一个“更深层”网页的链接,这将跳过证书检查的过程。
  如,如果你的网站有攻击用户的可预测 IP 或固定 IP 地址,则可以通过限制用户访问该用户的基本
IP 地 址 和 他 们 用 户 的 名 字 在 你 程 序 的 安 全 层 上 是 有 利 的 。 放 置 你 的 受 限 制 的 网 页 在 一 个 由
apache.htaccess 文件保护的独立的目录里也是一个好的做法。
  将配置文件放置在你 web 访问目录的外面。一个配置文件包含数据库密码和其他一些能被恶意用户
用来渗透或者破坏你站点的信息;从来不让远程用户访问这些文件。使用 PHP 的 include 函数来包含这
些来自不可 web 访问的目录的文件,万一这个目录曾因管理员误操作而产生 web 访问,这可能包括含
有“否定一切”的 an.htaccess 文件。尽管分层安全是多余的,但是它是一件积极的事情。