1
0
mirror of https://github.com/php/doc-de.git synced 2026-03-24 07:12:15 +01:00
Files
archived-doc-de/reference/exec/functions/escapeshellcmd.xml
Martin Samesch 96830a6891 Sync with EN
2024-04-23 20:32:37 +02:00

143 lines
4.3 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 62126c55f1c6ed444043e7272c4f9e233818a44b Maintainer: gerdtsteltner Status: ready -->
<!-- Reviewed: yes -->
<!-- Rev-Revision: 1.0 Reviewer: samesch -->
<refentry xml:id="function.escapeshellcmd" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>escapeshellcmd</refname>
<refpurpose>Maskiert Metazeichen der Shell</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>string</type><methodname>escapeshellcmd</methodname>
<methodparam><type>string</type><parameter>command</parameter></methodparam>
</methodsynopsis>
<para>
<function>escapeshellcmd</function> maskiert alle möglichen Zeichen in
einer Zeichenkette, die dazu benutzt werden könnten, um einen Shellbefehl
zur Durchführung beliebiger Befehle zu veranlassen. Diese Funktion sollte
verwendet werden, um sicherzustellen, dass alle Daten aus einer
Benutzereingabe maskiert werden, bevor diese Daten zu einer der Funktionen
<function>exec</function>, <function>system</function> oder dem
<link linkend="language.operators.execution">Backtick-Operator</link>
übergeben werden
</para>
<para>
Folgenden Zeichen wird ein Backslash vorangestellt:
<literal>&amp;#;`|*?~&lt;&gt;^()[]{}$\</literal>, <literal>\x0A</literal>
und <literal>\xFF</literal>. <literal>'</literal> und <literal>"</literal>
werden nur maskiert, wenn sie nicht paarweise auftreten. Unter Windows wird
all diesen Zeichen sowie <literal>%</literal> und <literal>!</literal> ein
Caret-Zeichen (<literal>^</literal>) vorangestellt.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>command</parameter></term>
<listitem>
<para>
Der zu maskierende Befehl.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Die maskierte Zeichenkette.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title><function>escapeshellcmd</function>-Beispiel</title>
<programlisting role="php">
<![CDATA[
<?php
// Wir erlauben hier absichtlich eine beliebige Anzahl von Argumenten
$command = './configure '.$_POST['configure_options'];
$escaped_command = escapeshellcmd($command);
system($escaped_command);
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<warning xmlns="http://docbook.org/ns/docbook">
<para>
<function>escapeshellcmd</function> sollte auf die gesamte
Befehls-Zeichenkette angewendet werden. Trotzdem kann der Angreifer damit
eine beliebige Anzahl von Argumenten übergeben. Um einzelne Argumente zu
maskieren, sollte stattdessen <function>escapeshellarg</function>
verwendet werden.
</para>
</warning>
<warning xmlns="http://docbook.org/ns/docbook">
<para>
Leerzeichen werden von <function>escapeshellcmd</function> nicht maskiert,
was unter Windows bei Pfaden wie
<literal>C:\Program Files\ProgramName\program.exe</literal> problematisch
sein kann. Dies kann mit dem folgenden Codeschnipsel entschärft werden:
<programlisting role="php">
<![CDATA[
<?php
$cmd = preg_replace('`(?<!^) `', '^ ', escapeshellcmd($cmd));
]]>
</programlisting>
</para>
</warning>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>escapeshellarg</function></member>
<member><function>exec</function></member>
<member><function>popen</function></member>
<member><function>system</function></member>
<member><link linkend="language.operators.execution">Backtick-Operator</link></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- 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
-->