background image

if(isset($_GET['search']))
{
$search = $_GET['search'];
}
?>
上面的两个处理流程是完全相同的。现在请注意一下下面的语句:
$search = $_GET['search'];
使用这一语句,在不影响流程的情况下,保证了$search 变量的状态维持原样,同时还可
以看出它是否受污染。
* 译注:受污染变量,即在程序执行过程中,该变量的值不是由赋值语句直接指定值,
而是来自其它来源,如控制台录入、数据库等。
1.2.4. 暴露最小化
PHP 应用程序需要在 PHP 与外部数据源间进行频繁通信。主要的外部数据源是客户端浏

器和数据库。如果你正确的跟踪数据,你可以确定哪些数据被暴露了。Internet 是最主要的
暴露源,这是因为它是一个非常公共的网络,您必须时刻小心防止数据被暴露在 Internet
上。
数据暴露不一定就意味着安全风险。可是数据暴露必须尽量最小化。例如,一个用户进入

 

支付系统,在向你的服务器传输他的信用卡数据时,你应该用 SSL 去保护它。如果你想
要在一个确认页面上显示他的信用卡号时,由于该卡号信息是由服务器发向他的客户端
的,你同样要用 SSL 去保护它。
再谈谈上一小节的例子,显示信用卡号显然增加了暴露的机率。SSL 确实可以降低风险,
但是最佳的解决方案是通过只显示最后四位数,从而达到彻底杜绝风险的目的。
为了降低对敏感数据的暴露率,你必须确认什么数据是敏感的,同时跟踪它,并消除所
有不必要的数据暴露。在本书中,我会展示一些技巧,用以帮助你实现对很多常见敏感数
据的保护。