Skip to content

Commit c2e18b4

Browse files
authored
Update variables.xml to En + Infostyle
1 parent b838d28 commit c2e18b4

File tree

1 file changed

+47
-36
lines changed

1 file changed

+47
-36
lines changed

security/variables.xml

Lines changed: 47 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,85 +1,96 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<!-- EN-Revision: ab6785b01ce1006e3a9761988575289f40c9b678 Maintainer: shein Status: ready -->
2+
<!-- EN-Revision: f0ed705e1ac34fed4c92979f63bee74c382f991b Maintainer: shein Status: ready -->
33
<!-- Reviewed: no -->
44
<chapter xml:id="security.variables" xmlns="http://docbook.org/ns/docbook">
5-
<title>Данные, введённые пользователем</title>
5+
<title>Данные пользовательского ввода</title>
66
<para>
7-
Наиболее опасные уязвимости во многих <acronym>PHP</acronym>-скриптах
8-
возникают не столько из-за самого языка, сколько из-за кода,
9-
написанного без учёта соответствующих требований безопасности.
10-
Как следствие, вы всегда должны выделять время на исследование
7+
Наиболее опасные уязвимости в <acronym>PHP</acronym>-скриптах
8+
часто возникают не столько из-за самого языка, сколько из-за кода,
9+
который написали с нарушением требований безопасности.
10+
Поэтому лучше потратить время на исследование
1111
разрабатываемого участка кода, чтобы оценить потенциальную
1212
угрозу от ввода переменной с нестандартным значением.
1313
<example>
14-
<title>Потенциально опасное использование переменных</title>
14+
<title>Потенциально опасная обработка переменных</title>
1515
<programlisting role="php">
1616
<![CDATA[
1717
<?php
18-
// удалить файлы из домашней директории пользователя...
19-
// а может, из ещё какой-нибудь?
20-
unlink ($evil_var);
2118
22-
// записать в лог-файл выполняемое действие...
23-
// а может быть в /etc/passwd?
24-
fwrite ($fp, $evil_var);
19+
// Удалить файлы из домашней директории пользователя...
20+
// а может, и ещё из какой-то?
21+
unlink($evil_var);
2522
26-
// выполнение тривиальных действий... или rm -rf *?
27-
system ($evil_var);
28-
exec ($evil_var);
23+
// Записать в лог-файл выполняемое действие...
24+
// а может, в файл /etc/passwd?
25+
fwrite($fp, $evil_var);
26+
27+
// Выполнение тривиальных действий... или команды rm -rf *?
28+
system($evil_var);
29+
exec($evil_var);
2930
3031
?>
3132
]]>
3233
</programlisting>
3334
</example>
3435
</para>
3536
<para>
36-
Вы должны тщательно проверять ваш код и быть абсолютно уверены в том,
37-
что все данные, передаваемые веб-браузером, проверяются надлежащим образом.
38-
Попробуйте ответить для себя на следующие вопросы:
37+
Требуется тщательно проверять код и быть на 100 % уверенным в правильной
38+
проверке данных, которые передаёт браузер.
39+
Ответьте на следующие вопросы:
3940
<itemizedlist>
4041
<listitem>
4142
<simpara>
42-
Будет ли данный скрипт воздействовать исключительно на предполагаемые
43-
данные?
43+
Влияет ли скрипт только на предполагаемые данные?
4444
</simpara>
4545
</listitem>
4646
<listitem>
4747
<simpara>
48-
Могут ли быть обработаны некорректные или нестандартные данные?
48+
Обрабатываются ли некорректные или нестандартные данные?
4949
</simpara>
5050
</listitem>
5151
<listitem>
5252
<simpara>
53-
Возможно ли использование скрипта непредусмотренным способом?
53+
Получится ли использовать скрипт способом, который не предусмотрели?
5454
</simpara>
5555
</listitem>
5656
<listitem>
5757
<simpara>
58-
Возможно ли его использование в сочетании с другими скриптами
58+
Возможно ли использовать скрипт в сочетании с другими скриптами
5959
в негативных целях?
6060
</simpara>
6161
</listitem>
6262
<listitem>
6363
<simpara>
64-
Будет ли каждая транзакция корректно логирована?
64+
Правильно ли логируется каждая транзакция?
6565
</simpara>
6666
</listitem>
6767
</itemizedlist>
6868
</para>
6969
<para>
70-
Ответив на эти вопросы во время написания скрипта, а не после, вы,
71-
возможно, предотвратите последующую доработку скрипта в целях повышения
72-
его безопасности. Начиная разработку с этих вопросов, вы не гарантируете
73-
полную безопасность вашей системы, но сможете значительно повысить её.
70+
Лучше задуматься о безопасности при разработке скрипта,
71+
а не дорабатывать небезопасный код, когда потребуется исправлять последствия уязвимостей.
72+
Такой подход не гарантирует безопасность системы,
73+
но помогает значительно снизить количество уязвимостей.
74+
</para>
75+
<para>
76+
Безопасность повышают путём отключения настроек, которые делают разработку удобной, но скрывают
77+
источник, достоверность или целостность данных. Уязвимости к атакам наподобие инъекций
78+
или жонглирования данными возникают, когда переменные создаются неявно или когда входные данные
79+
не проверяются.
80+
</para>
81+
<para>
82+
Директива <literal>register_globals</literal>
83+
и директивы механизма <literal>magic_quotes</literal>, которые удалили в PHP 5.4.0, когда-то способствовали
84+
этим рискам, поскольку автоматически создавали переменные из пользовательского ввода
85+
и экранировали данные непоследовательно. Хотя директивы удалили из PHP, аналогичные риски сохраняются,
86+
когда входные данные обрабатывают неправильно.
7487
</para>
7588
<para>
76-
Вы также можете рассмотреть отключение таких конфигурационных опций, как
77-
register_globals, magic_quotes и некоторых других, которые могут приводить
78-
к сомнениям относительно происхождения или значения получаемых переменных.
79-
Использование при написании <acronym>PHP</acronym>-кода режима
80-
error_reporting(E_ALL) может помочь предупредить вас об
81-
использовании переменных до инициализации или проверки
82-
(что предотвратит работу с данными, отличными от ожидаемых).
89+
Вызов <link linkend="function.error-reporting">error_reporting(E_ALL)</link> включает режим сообщения об ошибках всех уровней
90+
и помогает определять неинициализированные переменные и проверять входные данные. Инструкция
91+
<link linkend="language.types.declarations.strict">declare(strict_types=1)</link> включает режим строгой типизации,
92+
который появился в PHP 7 и который повышает безопасность за счёт строгой проверки типов,
93+
предотвращает непреднамеренное преобразование типов и повышает общую безопасность.
8394
</para>
8495
</chapter>
8596
<!-- Keep this comment at the end of the file

0 commit comments

Comments
 (0)