1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-25 16:22:18 +01:00
Files
archived-doc-ru/security/variables.xml
Sergey Panteleev daef8df962 Обнуление тега Reviewed (#364)
[skip-lint]
[skip-spellcheck]
2021-11-16 13:03:53 +03:00

105 lines
4.7 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: ab6785b01ce1006e3a9761988575289f40c9b678 Maintainer: shein Status: ready -->
<!-- Reviewed: no -->
<chapter xml:id="security.variables" xmlns="http://docbook.org/ns/docbook">
<title>Данные, введённые пользователем</title>
<para>
Наиболее опасные уязвимости во многих <acronym>PHP</acronym>-скриптах
возникают не столько из-за самого языка, сколько из-за кода,
написанного без учёта соответствующих требований безопасности.
Как следствие, вы всегда должны выделять время на исследование
разрабатываемого участка кода, чтобы оценить потенциальную
угрозу от ввода переменной с нестандартным значением.
<example>
<title>Потенциально опасное использование переменных</title>
<programlisting role="php">
<![CDATA[
<?php
// удалить файлы из домашней директории пользователя...
// а может, из ещё какой-нибудь?
unlink ($evil_var);
// записать в лог-файл выполняемое действие...
// а может быть в /etc/passwd?
fwrite ($fp, $evil_var);
// выполнение тривиальных действий... или rm -rf *?
system ($evil_var);
exec ($evil_var);
?>
]]>
</programlisting>
</example>
</para>
<para>
Вы должны тщательно проверять ваш код и быть абсолютно уверены в том,
что все данные, передаваемые веб-браузером, проверяются надлежащим образом.
Попробуйте ответить для себя на следующие вопросы:
<itemizedlist>
<listitem>
<simpara>
Будет ли данный скрипт воздействовать исключительно на предполагаемые
данные?
</simpara>
</listitem>
<listitem>
<simpara>
Могут ли быть обработаны некорректные или нестандартные данные?
</simpara>
</listitem>
<listitem>
<simpara>
Возможно ли использование скрипта непредусмотренным способом?
</simpara>
</listitem>
<listitem>
<simpara>
Возможно ли его использование в сочетании с другими скриптами
в негативных целях?
</simpara>
</listitem>
<listitem>
<simpara>
Будет ли каждая транзакция корректно логирована?
</simpara>
</listitem>
</itemizedlist>
</para>
<para>
Ответив на эти вопросы во время написания скрипта, а не после, вы,
возможно, предотвратите последующую доработку скрипта в целях повышения
его безопасности. Начиная разработку с этих вопросов, вы не гарантируете
полную безопасность вашей системы, но сможете значительно повысить её.
</para>
<para>
Вы также можете рассмотреть отключение таких конфигурационных опций, как
register_globals, magic_quotes и некоторых других, которые могут приводить
к сомнениям относительно происхождения или значения получаемых переменных.
Использование при написании <acronym>PHP</acronym>-кода режима
error_reporting(E_ALL) может помочь предупредить вас об
использовании переменных до инициализации или проверки
(что предотвратит работу с данными, отличными от ожидаемых).
</para>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->