<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.exec.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'de',
  ),
  'this' => 
  array (
    0 => 'function.escapeshellcmd.php',
    1 => 'escapeshellcmd',
    2 => 'Maskiert Metazeichen der Shell',
  ),
  'up' => 
  array (
    0 => 'ref.exec.php',
    1 => 'Funktionen zur Programmausf&uuml;hrung',
  ),
  'prev' => 
  array (
    0 => 'function.escapeshellarg.php',
    1 => 'escapeshellarg',
  ),
  'next' => 
  array (
    0 => 'function.exec.php',
    1 => 'exec',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'reference/exec/functions/escapeshellcmd.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.escapeshellcmd" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">escapeshellcmd</h1>
  <p class="verinfo">(PHP 4, PHP 5, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">escapeshellcmd</span> &mdash; <span class="dc-title">Maskiert Metazeichen der Shell</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.escapeshellcmd-description">
  <h3 class="title">Beschreibung</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>escapeshellcmd</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$command</code></span>): <span class="type"><a href="language.types.string.php" class="type string">string</a></span></div>

  <p class="para rdfs-comment">
   <span class="function"><strong>escapeshellcmd()</strong></span> 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
   <span class="function"><a href="function.exec.php" class="function">exec()</a></span>, <span class="function"><a href="function.system.php" class="function">system()</a></span> oder dem
   <a href="language.operators.execution.php" class="link">Backtick-Operator</a>
   übergeben werden
  </p>
  <p class="para">
   Folgenden Zeichen wird ein Backslash vorangestellt:
   <code class="literal">&amp;#;`|*?~&lt;&gt;^()[]{}$\</code>, <code class="literal">\x0A</code>
   und <code class="literal">\xFF</code>. <code class="literal">&#039;</code> und <code class="literal">&quot;</code>
   werden nur maskiert, wenn sie nicht paarweise auftreten. Unter Windows wird
   all diesen Zeichen sowie <code class="literal">%</code> und <code class="literal">!</code> ein
   Caret-Zeichen (<code class="literal">^</code>) vorangestellt.
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.escapeshellcmd-parameters">
  <h3 class="title">Parameter-Liste</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">command</code></dt>
     <dd>
      <p class="para">
       Der zu maskierende Befehl.
      </p>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.escapeshellcmd-returnvalues">
  <h3 class="title">Rückgabewerte</h3>
  <p class="para">
   Die maskierte Zeichenkette.
  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-function.escapeshellcmd-examples">
  <h3 class="title">Beispiele</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Beispiel #1 <span class="function"><strong>escapeshellcmd()</strong></span>-Beispiel</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">// Wir erlauben hier absichtlich eine beliebige Anzahl von Argumenten<br /></span><span style="color: #0000BB">$command </span><span style="color: #007700">= </span><span style="color: #DD0000">'./configure '</span><span style="color: #007700">.</span><span style="color: #0000BB">$_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'configure_options'</span><span style="color: #007700">];<br /><br /></span><span style="color: #0000BB">$escaped_command </span><span style="color: #007700">= </span><span style="color: #0000BB">escapeshellcmd</span><span style="color: #007700">(</span><span style="color: #0000BB">$command</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">system</span><span style="color: #007700">(</span><span style="color: #0000BB">$escaped_command</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>
 </div>


 <div class="refsect1 notes" id="refsect1-function.escapeshellcmd-notes">
  <h3 class="title">Anmerkungen</h3>
  <div class="warning"><strong class="warning">Warnung</strong>
   <p class="para">
    <span class="function"><strong>escapeshellcmd()</strong></span> 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 <span class="function"><a href="function.escapeshellarg.php" class="function">escapeshellarg()</a></span>
    verwendet werden.
   </p>
  </div>
  <div class="warning"><strong class="warning">Warnung</strong>
   <p class="para">
    Leerzeichen werden von <span class="function"><strong>escapeshellcmd()</strong></span> nicht maskiert,
    was unter Windows bei Pfaden wie
    <code class="literal">C:\Program Files\ProgramName\program.exe</code> problematisch
    sein kann. Dies kann mit dem folgenden Codeschnipsel entschärft werden:
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$cmd </span><span style="color: #007700">= </span><span style="color: #0000BB">preg_replace</span><span style="color: #007700">(</span><span style="color: #DD0000">'`(?&lt;!^) `'</span><span style="color: #007700">, </span><span style="color: #DD0000">'^ '</span><span style="color: #007700">, </span><span style="color: #0000BB">escapeshellcmd</span><span style="color: #007700">(</span><span style="color: #0000BB">$cmd</span><span style="color: #007700">));</span></span></code></div>
    </div>

   </p>
  </div>
 </div>


 <div class="refsect1 seealso" id="refsect1-function.escapeshellcmd-seealso">
  <h3 class="title">Siehe auch</h3>
  <p class="para">
   <ul class="simplelist">
    <li><span class="function"><a href="function.escapeshellarg.php" class="function" rel="rdfs-seeAlso">escapeshellarg()</a> - Maskiert eine Zeichenkette (String), um sie als Shell-Argument benutzen zu k&ouml;nnen</span></li>
    <li><span class="function"><a href="function.exec.php" class="function" rel="rdfs-seeAlso">exec()</a> - F&uuml;hrt ein externes Programm aus</span></li>
    <li><span class="function"><a href="function.popen.php" class="function" rel="rdfs-seeAlso">popen()</a> - &Ouml;ffnet einen Dateizeiger f&uuml;r einen Prozess</span></li>
    <li><span class="function"><a href="function.system.php" class="function" rel="rdfs-seeAlso">system()</a> - F&uuml;hrt ein externes Programm aus und zeigt dessen Ausgabe an</span></li>
    <li><a href="language.operators.execution.php" class="link">Backtick-Operator</a></li>
   </ul>
  </p>
 </div>


</div><?php manual_footer($setup); ?>