最辣手的一件工作是若何从内部源(如某个用户、其余 Web 站点或某些其他资本)和已验证的数据中辨别出不受信赖的输出。有人提出了“不信任一切”的概念,即不论来自何处,关于一切函数都要验证其数据。这一做法会牵扯到以下几件工作:第一,验证在分歧的高低文中意味着分歧的工作;第二,在使用法式的一切级别上疾速履行验证是一件索然无味和易于失足的工作;第三,您是在审计使用法式而不是在从头从头编写它。您需求经由过程现有代码来跟踪用户输出,而不克不及用验证函数包装您看到的每一个变量。
1 <?php
2
3 // See if the user has the secret cookie.
4 if (!empty($_COOKIE['secret'])) {
5 $authorized = true;
6 }
7
8 // Now let's go through a list of press releases and show them.
9 $releases = get_press_releases();
10 foreach ($releases as $release) {
11
12 // Some releases are restricted. Only show them to people who can
13 // see secrets.
14 if ($release['secret']) {
15 if (!$authorized) {
16 continue;
17 }
18 }
19
20 // We must be allowed to see it.
21 showRelease($release);
22 }