cvs: phpdoc-ar /security index.xml

[email protected] ("Hafid Benhadria") Wed, 23 Jul 2003 21:48:19 -0000
Newsgroups php.doc.ar
Message-ID <cvshafid1058996899@cvsserver>
hafid		Wed Jul 23 17:48:19 2003 EDT

  Added files:                 
    /phpdoc-ar/security	index.xml 
  Log:
  updated to En 1.58
hafid-20030723174819.txt (text/plain, 75.8 KB)
Index: phpdoc-ar/security/index.xml
+++ phpdoc-ar/security/index.xml
<?xml version="1.0" encoding="ISO-8859-6"?>
<!-- $Revision: 1.1 $ -->
<!-- Updated to En 1.58 -->
<chapter id="security.index">
	<title>ÇäÃåæ</title>
	<simpara>
   PHP çê äÚÉ âèêÉ èÇäåÊÑÌå¬ ÓèÇÁ Êå ÊÖåêæç 
   áê ÎÇÏå èêÈ Ùäé Ãæç èÍÏÉ Ãè Êå ÊæáêÐç Ùäé Ãæç ËæÇÆêÉ 
   <acronym>CGI</acronym> åæáÕäɬ áÅæç êãèæ âÇÏÑÇ Ùäé èäèÌ ÇäåäáÇʬ ÊæáêÐ 
   ÇäÃèÇåÑ èáÊÍ èÕäÇÊ ÇäÔÈãÇÊ Ùäé ÇäÎÇÏå. çÐç 
   ÇäÎÕÇÆÕ ÊÌÙä Ãê ÔêÁ êïÔîÚñîä Ùäé ÎÇÏå èêÈ åÇ ÚêÑ Âåæ èÐäã ÈÔãä ÇáÊÑÇÖê.
   ÕïåðåîÊ PHP ÎÕêÕÇ äÊãèæ äÚÉ 
   ãÊÇÈÉ ÈÑÇåÌ CGI ÊÊÓå ÈÃæçÇ ÃãËÑ ÃåæÇ åæ Perl Ãè C èåæ ÎäÇä ÇäåÎÊÇÑÇÊ ÇäÕÇÆÈÉ 
   åæ ÎêÇÑÇÊ ÊçêÆÉ Òåæê ÇäÊÌåêÙ èÇäÊÔÚêä èãÐÇ ååÇÑÓÇÊ ÇäÊÔáêÑ ÇäåäÇÆåɬ 
   êåãæ ä PHP Ãæ ÊÙ×ê㬠èÈÔãä Ïâê⬠ÊÑãêÈÉ ÇäÍÑêÉ 
   èÇäÃåæ ÇäÊê ÊÍÊÇÌçÇ. 
  </simpara>
	<simpara>
   åËäåÇ ÊèÌÏ ×Ñâ åÎÊäáÉ äÇÓÊÙåÇä PHP¬ ÊèÌÏ ÃêÖÇ ÙÏÉ 
   ÎêÇÑÇÊ ÊçêÆÉ äåÑÇâÈÉ ÓäèãçÇ. åÎÊÇÑÇÊ 
   èÇÓÙÉ åæ ÇäÎêÇÑÇÊ ÊÖåæ äã ÅåãÇæêÉ ÇÓÊÙåÇä PHP äÃÚÑÇÖ  
   åÊÙÏÏɬ èêÙæê Ðäã ÃêÖÇ èÌèÏ ÊÑãêÈÇÊ åæ çÐç 
   ÇäÎêÇÑÇÊ èÊçêÆÇÊ ÇäÎÇÏå ÇäÊê ÊÄÏê Åäé æÊêÌÉ 
   ÊæÕêÈ ÚêÑ Âåæ. 
  </simpara>
	<simpara>
   ÊÌÏ åÑèæÉ ÊçêÆÉ PHP æÏÇ äçÇ êÊåËä áê åÑèæÉ ÇäÔêáÑÉ. 
   êåãæ ä PHP Ãæ ÊÓÊÙåä ÈÚÑÖ ÊÔêêÏ Ê×ÈêâÇÊ ÎÇÏåêÉ ãÇåäÉ 
   Èãä ÇäâÏÑÉ ÇäÊê êÕÈÍ åÓÊÎÏå ÇäÕîÏîáîÉ (shell) êÊèáÑ ÙäêçÇ ãåÇ êåãæ ä PHP Ãæ ÊÓÊÙåä 
   åæ ÃÌä ÊÖåêæÇÊ ÈÓê×É æÇÍêÉ-ÇäÎÇÏå èÈÃâä ÇäÊÈÙÇÊ áê ÈêÆÉ 
   åÊÍãå áêçÇ ÈÔãä èËêâ. ×ÑêâÉ ÊÔêêÏ çÐç ÇäÈêÆÉ èãÐÇ ÏÑÌÉ 
   ÃåÇæçÇ ÊâÙ åÓÄèäêÊçÇ ÃÓÇÓÇ Ùäé ÙÇÊâ å×èÑ PHP. 
  </simpara>
	<simpara>
   êÈÏà çÐÇ ÇäáÕä ÈÈÙÖ ÇäæÕÇÆÍ ÇäåÊÙäâÉ ÈÇäÃåæ ÇäÙÇå¬ êÔÑÍ 
   åÎÊäá ÇäÊÑãêÈÇÊ ÇäÎÇÕÉ ÈÎêÇÑÇÊ ÇäÊçêÆÉ èÇäèÖÙêÇÊ 
   ÇäÊê êåãæ ÇÓÊÙåÇäçÇ áêçÇ ÈÃåÇæ¬ èêÕá ÃêÖÇ åÎÊäá ÇäÅÙÊÈÇÑÇÊ áêåÇ êÎÕ 
   ÇäÊÔáêÑ ÈÍÓÈ ÇÎÊäÇá åÓÊèêÇÊ ÇäÃåæ. 
  </simpara>
	<sect1 id="security.general">
		<title>ÅÙÊÈÇÑÇÊ ÙÇåÉ</title>
		<simpara>
    Åæ èÌèÏ æØÇå Âåæ È×ÑêâÉ ãÇåäÉ çè ÇÓÊÍÇäÉ ÇáÊÑÇÖêɬ èáê çÐÇ ÇäÅ×ÇѬ 
    ÚÇäÈÇ åÇ ÊïÓÊÙåä áê åçæÉ ÇäÃåæ åâÇÑÈÉ ÊÊåËä áê ÅÍÏÇË ÊèÇÒæ Èêæ 
    ÇäåÌÇÒáÉ èâÇÈäêÉ ÇäÅÓÊÙåÇä. ÅÐÇ ÇâÊÖé ãä åÊÚêÑ ÙæÏ ÅÑÓÇäç åæ âÈä åÓÊÎÏå åÇ 
    Ôãäêæ åæ ÃÔãÇä ÇäÊÕÏêâ ÇäÅÍÕÇÆê ÇäÅÍêÇÆê (biometric validation) (åËä åÓÍ äÔÈãêÉ ÇäÙêæ retinal scan 
    èÈÕåÉ ÇäÅÕÈÙ fingerprint)¬ áêåãæ Ãæ ÊîÍòÕïäî Ùäé åÓÊèé åÑÊáÙ ääÚÇêÉ åæ  
    ÇÙÊåÇÏêÉ ÇäÃÏÇÁ ÇäåÍÇÓÈêñ. êÙæê çÐÇ ÃêÖÇ Ãæ ÇäÃåÑ ÓêâÊÖê ÈÑçÉ æÕá ÓÇÙÉ åæ ÃÌä åäà 
    æåèÐÌ åÊèÓ× ÇäÊÙâêϬ ååÇ êÔÌÙ ÇäåÓÊÎÏåêæ Ùäé ÅêÌÇÏ ×Ñâ 
    äÊÌÇèÒ ÇäÃåæ. 
   </simpara>
		<simpara>
    Åæ ÃáÖä ÃåÇæ çè áê ÇäÚÇäÈ ÚêÑ ÈÇÑÒ ÈåÇ áêç ÇäãáÇêÉ åæ ÃÌä åäÇÁåÉ 
    ÇäåÊ×äÈÇÊ åæ Ïèæ åæÙ ÇäåÓÊÎÏå åæ ÅÊåÇå 
    Ùåäç¬ Ãè ÇäÅËâÇä ÇäÒÇÆÏ äÔêáÑÉ ÇäåÄäá åæ ÎäÇä 
    ÇäÊÙâêÏ ÇäåáÑ×. èáÙäǬ áÅæ ÈÙÖ ÇäçÌèåÇÊ ÇäÃåæêÉ çê ÈÈÓÇ×É ÇÓÊÚäÇäÇÊ  
    äçÐÇ ÇäæèÙ åæ ÇäÃåæ ÇäåÙÒÒ Åäé ÍÏ åáÑ× èÇäÂÎÐ áê ÇäÊäÇÔê åÙ ÇäÒåæ. 
   </simpara>
		<simpara>
    ÙÈÇÑÉ ÊÓÊÍâ ÇäÊÐãêÑ: áâ× êãèæ æØÇå åÇ ÌêÏÇ ÈÍÓÈ ÃÖÙá 
    ÍäâÉ áê ÇäÓäÓäÉ. ÅÐÇ ãÇæ êÊå ÊÏèêæ ãä ÇäåÙÇåäÇÊ ÈÕèÑÉ èËêâÉ Ùäé ÃÓÇÓ 
    Çäèâʬ ÇäåãÇæ¬ æèÙ ÇäåÙÇåäɬ ÅäÎ. áê Íêæ êÊå ÇäÊÍââ åæ ÇäåÓÊÎÏå áâ× 
    åæ ÎäÇä åÌÑÏ åäá ÊÙÑêá ÇäÅÑÊÈÇ׬ áÅæ ÃÕÍêÉ ÑÈ× ÇäåÓÊÎÏåêæ 
    ÈÏêèÇæ ÇäåÙÇåäÇÊ ÊÖÙá ÈÔÏÉ. 
   </simpara>
		<simpara>
    ÙæÏ ÇäÅÎÊÈÇѬ ÊÐñãÑ Ãæã äæ Êãèæ âÇÏÑÇ Ùäé ÇÎÊÈÇÑ ãä 
    ÇäÅåãÇæêÇÊ ÍÊé Êäã ÇäÎÇÕÉ ÈÃÈÓ× ÇäÕáÍÇÊ. Åæ ÇäåïÏÎä ÇäÐê êåãæ 
    Ãæ ÊÊèâÙç Óêãèæ ÊåÇåÇ åæ Ïèæ ÃêÉ ÕäÉ ÈÇäåïÏÎä ÇäåïÙò×îé åæ âÈä 
    åèØá ÓÇÎ׬ âÑÕÇæ ÈÌÙÊç ÙÏÉ ÃÔçÑ åæ ÇäååÇÑÓÉ 
    Ãè ÍÊé â× åæÒäê êåÔê Ùäé äèÍÉ ÇäåáÇÊêÍ. äçÐÇ ãäç 
    êïáîÖä ÇäæØÑ áê ÇäÔêáÑÉ È忨èÑ åæ×âê äÊåêêÒ 
    åèÇâÙ ÇäÈêÇæÇÊ ÚêÑ ÇäåÊèâÙÉ èÇäÊê êïåãæ ÅÏÎÇäçÇ èÍêæçÇ ÊÊÈñïÙ ãêáêÉ 
    ÊÙÏêäçǬ ÅæâÇÕçÇ Ãè ÊãÈêÑçÇ.
   </simpara>
		<simpara>
    Åæ ÇäÅæÊÑæÊ åäêÁ ÈÃæÇÓ êÍÇèäèæ ÇäÍÕèä Ùäé ÇäÔçÑÉ 
    äÃæáÓçå åæ ÎäÇä ÅÙÇâÉ ÔêáÑÊ㬠ÌÙä åèâÙã êæçÇѬ ÅÑÓÇä 
    åÍÊèé ÚêÑ äÇÆâ ååÇ êÌÙä êèåã Ùäé ÇäæâêÖ ÔêñðâëÇ. 
    äÇ êçå Åæ ãæÊ Êåäã åèâÙÇ ÕÚêÑÇ Ãè ãÈêÑǬ ÃæÊ 
    åïÓÊçÏá äåÌÑÏ Ãæã Ùäé ÇäÎ׬ èäåÌÑÏ Ãæã ÊåÊäã ÎÇÏåÇ 
    êåãæ ÇäÅÊÕÇä Èç. çæÇã ÙÏÉ ÈÑÇåÌ âÑÕæÉ äÇ Êãêä ÈåãêÇäêæ¬ çê 
    ÈÈÓÇ×É Êâèå ÈÙåäêÉ ÊåÔê× äåâÇ×Ù èÇÓÙÉ åæ åÑÇÓêå ÇäÅæÊÑæÊ (IP blocks) ÈÍËÇ Ùæ ÖÍÇêÇ. ÍÇèä Ãæ äÇ ÊÕÈÍ 
    ÅÍÏÇçÇ. 
   </simpara>
	</sect1>
	<sect1 id="security.cgi-bin">
		<title>Installed as CGI binary</title>
		<sect2 id="security.cgi-bin.attacks">
			<title>çÌèåÇÊ ååãæÉ</title>
			<simpara>
     êÊÓå ÇÓÊÙåÇä PHP Ùäé Ôãä ËæÇÆêÉ <acronym>CGI</acronym> Èãèæç ÎêÇÑÇ  
     ääÊæÕêÈÇÊ ÇäÊê åæ ÃÌä ÓÈÈ åÙêæ äÇ ÊèÏ ÅÏåÇÌ PHP Ùäé Ôãä 
     èÍÏÉ Öåæ ÈÑæÇåÌ ÇäÎÇÏå (åËä Apache)¬ è ÇäÊê ÓÊÓÊÙåä PHP ÈÃæèÇÙ 
     åÎÊäáÉ åæ ÃÚäáÉ CGI ÈÚÑÖ Îäâ ÈêÆÇÊ chroot è setuid
     ÂåæÉ åæ ÃÌä ÇäÓãÑêÈÊÇÊ. çÐÇ ÇäÊæÕêÈ êÓÊäÒå áê ÇäÙÇÏÉ ÊËÈêÊ 
     ËæÇÆêÉ PHP ÇäâÇÈäÉ ääÊæáêÐ áê åÌäÏ cgi-bin ÇäÎÇÕ ÈÎÇÏå ÇäèêÈ. ÊèÕê CERT
     ääÅÓÊÔÇÑÇÊ <ulink url="&url.cert;">CA-96.11</ulink> 
     ÈÙÏå èÖÙ Ãê åïÄîèñðä Öåæ cgi-bin. ÍÊé èÅæ ãÇæ ÈÇäÅåãÇæ ÇÓÊÙåÇä ËæÇÆêÉ PHP 
     ãåïÄîèñðä åæáÑϬ áÅæ PHP âÏ Õïåñðå 
     åæ ÃÌä ÊÌæêÈ ÇäçÌèåÇÊ ÇäÊê êÌÙä åæçÇ çÐÇ ÇäæèÙ åæ ÇäÊæÕêÈ ååãæÉ: 
    </simpara>
			<itemizedlist>
				<listitem>
					<simpara>
       ÙæÏ èäèÌ åäáÇÊ Ç俨Çå: <filename role="url">http://my.host/cgi-bin/php?/etc/passwd</filename>
					</simpara>
					<simpara>
       ÇäåÙäèåÇÊ ÇäÅÓÊáçÇåêÉ áê åÍÏÏ åÇ ääåèÑÏ ÇäåÊÔÇÈç (URL) ÇäÊê ÊÊÈÙ ÙäÇåÉ ÇäÅÓÊáçÇå (?) êÊå 
       ÊåÑêÑçÇ åæ âÈä èÇÌçÉ CGI Åäé ÇäåïÄîèñðä Ùäé Ôãä åÄÔÑÇÊ äÓ×Ñ ÇäÃèÇåÑ. 
       áê ÇäÙÇÏɬ Êâèå ÇäåïÄñîèñðäÇÊ ÈáÊÍ èÊæáêÐ Çäåäá 
       ÇäåâÕèÏ Ùäé Ãæç ÇäåÄÔÑ ÇäÃèä Ùäé Ó×Ñ ÇäÃèÇåÑ. 
      </simpara>
					<simpara>
       ÙæÏ ÇÓÊÍÖÇÑç Ùäé Ôãä ËæÇÆêÉ CGI¬ êâèå PHP ÈÑáÖ ÊÃèêä 
       åÄÔÑÇÊ Ó×Ñ ÇäÃèÇåÑ. 
      </simpara>
				</listitem>
				<listitem>
					<simpara>
       ÙæÏ èäèÌ Ãê åÓÊæÏ èêÈ Ùäé ÇäÎÇÏå: <filename role="url">http://my.host/cgi-bin/php/secret/doc.html</filename>
					</simpara>
					<simpara>
       êÊÓå ÇäÌÒÁ ÇäåÙäèåÇÊê ÇäåÊÙäâ ÈÇäåÓÇÑ ÇäÎÇÕ ÈåÍÏÏ ÇäåèÑÏ ÇäåÊÔÇÈç (URL) ÇäÊê êÊÈÙ ÅÓå ËæÇÆêÉ PHP 
       <filename role="uri">/secret/doc.html</filename> 
       Èãèæç åÓÊÙåäÇ ÈÔãä åÃäèá ÈÚÑÖ  ÊÍÏêÏ ÅÓå Çäåäá ÇäÐê êÌÈ 
       áÊÍç èÊÃèêäç åæ âÈä ÈÑæÇåÌ <acronym>CGI</acronym>. 
       áê ÇäÙÇÏɬ êÊå ÇÓÊÙåÇä ÈÙÖ ÊèÌêçÇÊ ÊçêÆÉ ÎÇÏå ÇäèêÈ (Apache: 
       Action)  ÈÚÑÖ ÅÙÇÏÉ ÊÍèêä ×äÈêÇÊ ÇäåÓÊæÏÇÊ åËä 
       <filename role="url">http://my.host/secret/script.php</filename> Åäé 
       åïÄîèñðä PHP. åæ ÎäÇä çÐÇ ÇäÊæÕêȬ êâèå ÎÇÏå ÇäèêÈ ÃèäÇ ÈÊáâÏ 
       ÊÑÇÎêÕ ÇäèäèÌ Åäé ÇäåÌäÏ <filename role="uri">/secret</filename>¬ èÈÙÏ Ðäã êÎäâ 
       Çä×äÈêÉ ÇäåÙÇÏ ÊèÌêççÇ <filename role="url">http://my.host/cgi-bin/php/secret/script.php</filename>. 
       ääÃÓᬠÅÐÇ Êå ÊâÏêå Çä×äÈêÉ åæÐ ÇäÈÏÇêÉ Ùäé çÐÇ ÇäÔãä¬ 
       áÅæ ÎÇÏå ÇäèêÈ äæ êâèå ÈÃê ÊáâÏ ääèäèÌ Åäé Çäåäá  <filename role="uri">/secret/script.php</filename>¬ Èä ÓêãÊáê ÈÇäåäá 
       <filename role="uri">/cgi-bin/php</filename>. ÈçÐç Çä×Ñêâɬ 
       áÅæ Ãê åÓÊÎÏå êïâòÈîäï èäèÌç ä <filename role="uri">/cgi-bin/php</filename> êãèæ ÈÇÓÊ×ÇÙÊç èäèÌ Ãê 
       åÓÊæÏ åÍåê Ùäé ÎÇÏå ÇäèêÈ. 
      </simpara>
					<simpara>
       áê PHP¬ êåãæ ÇÓÊÙåÇä ÎêÇÑ ÊçêÆÉ Òåæ ÇäÊÌåêÙ <link linkend="install.configure.enable-force-cgi-redirect">--enable-force-cgi-redirect</link>
       èãÐÇ ÊèÌêçÇÊ ÊçêÆÉ Òåæ ÇäÊÔÚêä <link linkend="ini.doc-root">doc_root</link> è <link linkend="ini.user-dir">user_dir</link> åæ ÃÌä ÊÌæêÈ 
       çÐÇ ÇäçÌèå¬ ÅÐÇ ãÇæÊ ÔÌÑÉ åÓÊæÏÇÊ ÇäÎÇÏå ÊÊèáÑ Ùäé Ãê åÌäÏÇÊ 
       ÐÇÊ ÊÖêêâÇÊ èäèÌ. Ãäâê æØÑÉ Åäé ÇäÃÓáä åæ ÃÌä ÇäÍÕèä Ùäé ÔÑÍ ãÇåä 
       äåÎÊäá ÇäÊÑãêÈÇÊ. 
      </simpara>
				</listitem>
			</itemizedlist>
		</sect2>
		<sect2 id="security.cgi-bin.default">
			<title>ÇäÍÇäÉ 1: áâ× ÇäåäáÇÊ ÇäÙÇåÉ ÊÊå ÎÏåÊçÇ</title>
			<simpara>
     ÅÐÇ ãÇæ ÎÇÏåã äÇ êÍÊèê åÖåèæÇ ÚêÑ åâêñÏ 
     ÈãäåÉ åÑèÑ Ãè åæ ÎäÇä åÑÇâÈÉ ÇäèäèÌ ÇäâÇÆåÉ Ùäé ÃÓÇÓ åÑÇÓêå ÇäÅæÊÑæÊ (IP)¬ áäÇ ÍÇÌÉ ÍêæÆÐ 
     äÎêÇÑÇÊ ÇäÊçêÆÉ çÐç. ÅÐÇ ãÇæ ÎÇÏå ÇäèêÈ äÏêã äÇ êÓåÍ 
     äã ÈÇäâêÇå ÈÙåäêÇÊ ÅÙÇÏÉ ÇäÊèÌêç¬ Ãè Ãæ ÇäÎÇÏå äÇ êÊèáÑ Ùäé ×ÑêâÉ 
     ääÅÊÕÇä ÈËæÇÆêÉ PHP ÍÊé Êãèæ Çä×äÈêÉ ÙÈÇÑÉ Ùæ 
     ×äÈêÉ åÙÇÏ ÊèÌêççÇ ÈÔãä Â忬 áÈÅåãÇæã ÊÍÏêÏ çÐÇ ÇäÎêÇÑ <link linkend="install.configure.enable-force-cgi-redirect">--enable-force-cgi-redirect</link>
     áê ÓãÑêÈÊ ÇäÊçêÆÉ. ÓÊØä ÈÍÇÌÉ ääÊÃãÏ åæ Ãæ ÓãÑêÈÊÇÊ PHP 
     ÇäÎÇÕÉ Èã äÇ ÊÙÊåÏ ÃêÇ åæ Çä×ÑêâÊêæ åæ ÃÌä åæÇÏÇÉ ÇäÓãÑêÈʬ 
     ÓèÇÁ åÈÇÔÑÉ åæ ÎäÇä <filename role="php">http://my.host/cgi-bin/php/dir/script.php</filename>
      Ãè åæ ÎäÇä ÅÙÇÏÉ ÇäÊèÌêç <filename role="php">http://my.host/dir/script.php</filename>. 
    </simpara>
			<simpara>
     êåãæ ÊçêÆÉï ÅÙÇÏÉ ÇäÊèÌêç áê Apache åæ ÎäÇä ÇÓÊÙåÇä ÊèÌêçÇÊ AddHandler 
     è Action (ÃæØÑ áê ÇäÃÓáä). 
    </simpara>
		</sect2>
		<sect2 id="security.cgi-bin.force-redirect">
			<title>ÇäÍÇäÉ 2: ÅÓÊÙåÇä --enable-force-cgi-redirect</title>
			<simpara>
     çÐÇ ÇäÎêÇÑ ÇäÎÇÕ ÈÒåæ ÇäÊÌåêÙ êÓÇÙÏ Ùäé ÊáÇÏê Ãæ êâèå Ãê ÔÎÕ ÈåæÇÏÇÉ PHP 
     åÈÇÔÑÉ ÈèÇÓ×É åÍÏÏ åèÑÏ åÊÔÇãä (URL) åËä <filename role="php">http://my.host/cgi-bin/php/secretdir/script.php</filename>. 
     ÈÏäÇ åæ Ðä㬠êâèå PHP ÈÇäÊáÓêÑ Ùäé çÐÇ Çäæå× áâ× ÅÐÇ ÓÇÑ Ùäé 
     âÇÙÏÉ ÅÙÇÏÉ ÇäÊèÌêç Åäé ÎÇÏå ÇäèêÈ. 
    </simpara>
			<simpara>
     áê ÇäÙÇÏɬ ÊÊå ÅÙÇÏÉ ÇäÊèÌêç ÈÍÓÈ ÊçêÆÉ Apache ÈèÇÓ×É 
     ÇäÊèÌêçÇÊ ÇäÊÇäêÉ: 
    </simpara>
			<programlisting role="apache-conf"><![CDATA[
Action php-script /cgi-bin/php
AddHandler php-script .php
]]></programlisting>
			<simpara>
     çÐÇ ÇäÎêÇÑ âÏ Êå ÇÎÊÈÇÑç áâ× åÙ ÎÇÏå ÇäèêÈ Apache¬ 
     èçè êÙÊåÏ Ùäé Apache åæ ÃÌä ÊÍÏêÏ åÊÚêÑ ÈêÆÉ CGI ÚêÑ ÇäâêÇÓê 
     <envar>REDIRECT_STATUS</envar> äÏé ×äÈêÇÊ ÅÙÇÏÉ ÇäÊèÌêç. ÅÐÇ 
     äå êãæ ÎÇÏåã ääèêÈ êÏÙå ÃêÉ ×ÑêâÉ ÅÎÈÇÑ Åæ ãÇæÊ Çä×äÈêÉ 
     åÈÇÔÑÉ Ãè åÙÇÏ ÊèÌêççǬ áäêÓ ÈåâÏèÑã ÇÓÊÙåÇä çÐÇ ÇäÎêÇÑ èêÌÈ Ùäêã ÇÓÊÙåÇä 
     ÅÍÏé Çä×Ñâ ÇäÃÎÑé åæ ÃÌä ÊÔÚêä ÅÕÏÇÑÉ CGI¬ ÇäåèËâÉ 
     çæÇ. 
    </simpara>
		</sect2>
		<sect2 id="security.cgi-bin.doc-root">
			<title>ÇäÍÇäÉ 3: ÊÍÏêÏ doc_root Ãè user_dir</title>
			<simpara>
     ÃÍêÇæÇ¬ êÙÊÈÑ ÊÖåêæ åÍÊèé æÔê׬ åËä ÇäÓãÑêÈÊÇÊ èâÇÈäÇÊ ÇäÊæáêЬ áê 
     åÌäÏÇÊ ÇäåÓÊæÏÇÊ ÇäÎÇÕÉ ÈÎÇÏå ÇäèêÈ Ùäé Ãæç ååÇÑÓÉ ÚêÑ ÂåæÉ. 
     ÅÐÇ ÍÏË äÓÈÈ åǬ åËä Î×à áê ÇäÊçêÆÉ¬ Ãæ Êå 
     ÙÑÖ ÇäÓãÑêÈÊÇÊ Ùäé ÃæçÇ åÓÊæÏÇÊ HTML ÈÏäÇ åæ ÊæáêÐçǬ áêåãæ  
     Ãæ êæÊÌ Ùæ çÐÇ ãÔá ääåäãêÉ ÇäáãÑêÉ Ãè åÙäèåÇÊ ÃåæêÉ 
      åËä ãäåÇÊ ÇäåÑèÑ. èçãÐǬ áÅæ ÇäÙÏêÏ åæ åÏêÑê ÇäÃæØåÉ ÓêáÖäèæ 
     ÊæÕêÈ ÈæêÉ åÌäÏÇÊ ÃÎÑé åæ ÃÌä ÇäÓãÑêÈÊÇÊ 
     ÇäâÇÈäÉ ääèäèÌ áâ× åæ ÎäÇä PHP CGI¬ èÈÇäÊÇäê ÇäåïáÓñîÑîÉ 
     ÏèåÇ èÚêÑ ÇäåÙÑèÖÉ åËäåÇ çê. 
    </simpara>
			<simpara>
     ãÐä㬠ÅÐÇ äå ÊÊèáÑ ×ÑêâÉ ääÊÃãÏ åæ Ãæ Çä×äÈêÇÊ äÇ êÊå ÅÙÇÏÉ ÊèÌêççǬ 
     åËäåÇ èïÕðáîÊ áê Çäåâ×Ù ÇäÓÇÈ⬠
     áÅæç åæ ÇäÖÑèÑÉ ÊÍÏêÏ ÌÐÑ èËÇÆâê (doc_root) ÎÇÕ ÈÇäÓãÑêÈÊÇÊ èêãèæ 
     åÎÊäáÇ Ùæ ÇäÌÐÑ ÇäèËÇÆâê ÇäÎÇÕ ÈÇäèêÈ. 
    </simpara>
			<simpara>
     êåãæã ÊÍÏêÏ ÇäÌÐÑ ÇäèËÇÆâê ÇäÎÇÕ ÈÓãÑêÈÊÇÊ PHP ÈèÇÓ×É 
     ÊèÌêç ÇäÊçêÆÉ <link linkend="ini.doc-root">doc_root</link> áê 
     <link linkend="configuration.file">åäá ÇäÊçêÆÉ</link>¬ Ãè ÍÊé 
     ÊÍÏêÏ åÊÚêÑ ÇäÈêÆÉ 
     <envar>PHP_DOCUMENT_ROOT</envar>. ÅÐÇ Êå ÊÍÏêÏç¬ áÅæ ÅÕÏÇÑÉ CGI 
     åæ PHP ÓÊâèå ÏèåÇ ÈÅæÔÇÁ ÅÓå Çäåäá ÈÚÑÖ ÇäÅæáÊÇÍ ÈèÇÓ×É 
     <parameter>doc_root</parameter> èåÙäèåÇÊ ÇäåÓÇÑ áê 
     Çä×äÈêɬ ÍÊé Êãèæ åÊÃãÏÇ åæ Ãæ èäÇ Ãê ÓãÑêÈÊ êÊå ÊæáêÐç ÎÇÑÌ çÐÇ 
     ÇäåÌäÏ (åÇ ÙÏÇ ÈÇäæÓÈÉ ä <parameter>user_dir</parameter>
     áê ÇäÃÓáä). 
    </simpara>
			<simpara>
     ÎêÇÑ ÂÎÑ âÇÈä ääÅÓÊÙåÇä çè <link linkend="ini.user-dir">user_dir</link>. ÙæÏåÇ äÇ êÊå ÊÍÏêÏ user_dir¬ 
     áÅæ ÇäÔêÁ ÇäèÍêÏ ÇäÐê êÊÍãå áê ÅÓå Çäåäá ÇäåáÊèÍ çè 
     <parameter>doc_root</parameter>. Åæ áÊÍ åÍÏÏ åèÑÏ åÊÔÇãä (url) åËä <filename role="url">http://my.host/~user/doc.php</filename> äÇ êÊÑÊÈ Ùæç 
     áÊÍ åäá ÊÍÊ åÌäÏ åè׿ ÇäåÓÊÎÏåêæ èÅæåÇ åäá 
     êÏÙé <filename role="uri">~user/doc.php</filename> ÊÍÊ 
     doc_root (æÙå¬ ÅÓå åÌäÏ êÈÊÏÃ È 
     [<literal>~</literal>]). 
    </simpara>
			<simpara>
     ÅÐÇ Êå ÊÍÏêÏ âêåÉ user_dir åËäÇ È <filename role="dir">public_php</filename>¬ áÅæ ×äÈêÉ åËä <filename role="url">http://my.host/~user/doc.php</filename> ÓÊáÊÍ 
     åäáÇ êÏÙé <filename>doc.php</filename> ÊÍÊ åÌäÏ 
     êÏÙé <filename role="dir">public_php</filename> ÊÍÊ ÇäåÌäÏ Çäåè׿ 
     ÇäÎÇÕ ÈÇäåÓÊÎÏå. ÅÐÇ ãÇæ åè׿ ÇäåÓÊÎÏå çè <filename role="dir">/home/user</filename>¬ áÅæ Çäåäá ÇäåïæîáñîÐ çè 
     <filename>/home/user/public_php/doc.php</filename>. 
    </simpara>
			<simpara>
				êÍÏË ÊèÓñïÙ <parameter>user_dir</parameter> ÈÚÖ ÇäæØÑ Ùæ 
     ÅÙÏÇÏ Çä <parameter>doc_root</parameter>¬ èÈÇäÊÇäê¬ êåãæã ÇäÊÍãå 
     áê ÇäèäèÌ Åäé ÇäÌÐÑ ÇäèËÇÆâê èåÌäÏ ÇäåÓÊÎÏå 
     èÐäã ÈÔãä åæáÕä. 
    </simpara>
		</sect2>
		<sect2 id="security.cgi-bin.shell">
			<title>ÇäÍÇäÉ 4: åáÓÑ PHP ÎÇÑÌ ÔÌÑÉ ÇäèêÈ</title>
			<para>
     ÎêÇÑ Âåæ ÌÏÇ çè èÖÙ ËæÇÆêÉ åáÓÑ PHP áê åãÇæ åÇ 
     ÎÇÑÌ ÔÌÑÉ ÇäèêÈ ÇäÎÇÕÉ ÈÇäåäáÇÊ. áê <filename role="dir">/usr/local/bin</filename>¬ åËäÇ. ÇäÓäÈêÉ ÇäáÙäêÉ ÇäèÍêÏÉ 
     ÇäåÑÊÈ×É ÈçÐÇ ÇäÎêÇÑ çê Ãæç ÓêÊèÌÈ ÇäÂæ èÖÙ Ó×Ñ 
     ÔÈêç ä: 
     <informalexample>
					<programlisting><![CDATA[
#!/usr/local/bin/php
]]></programlisting>
				</informalexample>
     Ùäé Ãæç ÇäÓ×Ñ ÇäÃèä äÃê åäá êÊÖåæ èÓèå PHP. ÓÊÍÊÇÌ ÃêÖÇ 
     äÌÙä Çäåäá âÇÈäÇ ääÊæáêÐ. Ùäé çÐÇ ÇäåðæèÇä¬ ÊÙÇåä åÙ ÇäèÖÙ ÊåÇåÇ åËäåÇ 
     ÓÊÊÙÇåä åÙ Ãê ÓãÑêÈÊ CGI ãïÊðÈî ÈèÇÓ×É Perl Ãè sh Ãè Ãê 
     äÚÉ ÈÑåÌÉ ÓãÑêÈÊÇÊ ÃÎÑé Êãèæ åÃäèáÉ èÊÓÊÙåä 
     <literal>#!</literal>¬ ÂäêÉ ÊçÑÈ shell ÈÚÑÖ ÇäÅâäÇÙ 
     ÇäÐÇÊê. 
    </para>
			<para>
     äÌÙä PHP êÊÙÇåä åÙ åÙäèåÇ <envar>PATH_INFO</envar> è
     <envar>PATH_TRANSLATED</envar> ÈÔãä ÕÍêÍ èÈÇäåèÇÒÇÉ åÙ çÐÇ 
     ÇäÊæÕêȬ áêÌÈ ÊÌåêÙ åïáÓñðÑ php èçè êÊÖåæ ÎêÇÑ ÊçêÆÉ <link linkend="install.configure.enable-discard-path">--enable-discard-path</link>. 
    </para>
		</sect2>
	</sect1>
	<sect1 id="security.apache">
		<title>ÇäÊËÈêÊ Ùäé Ôãä èÍÏÉ Apache</title>
		<simpara>
    ÙæÏ ÇÓÊÎÏÇå PHP Ùäé Ôãä èÍÏÉ Apache áÅæç êÑË ÊÑÇÎêÕ åÓÊÎÏå Apache 
    (ÃÕäǬ Êäã ÇäÎÇÕÉ ÈÇäåÓÊÎÏå "äÇ ÃÍÏ"). äçÐÇ ÙÏÉ 
    ÊÃËêÑÇÊ Ùäé ÇäÃåæ èÇäÊÎèêä. åËäǬ ÅÐÇ ãæÊ ÈÕÏÏ ÇÓÊÙåÇä 
    PHP åæ ÃÌä èäèÌ âÇÙÏÉ ÈêÇæÇʬ áÅæã¬ ÅäÇñ ÅÐÇ ãÇæÊ âÇÙÏÉ ÇäÈêÇæÇÊ ÊÊÖåæ ÊÍãå ÇäèäèÌ ÙæÏ ÇäÊÔêêϬ 
    Êãèæ åÖ×ÑÇ äÌÙä âÇÙÏÉ ÇäÈêÇæÇÊ âÇÈäÉ ääèäèÌ åæ âÈä 
    ÇäåÓÊÎÏå "äÇ ÃÍÏ". êÙæê çÐÇ Ãæ Ãê ÓãÑêÈÊ ÂËå êåãæç ÇäèäèÌ Åäé âÇÙÏÉ ÇäÈêÇæÇÊ 
    èÇäÊÙÏêä áêçǬ ÍÊé èäè ÈÏèæ ÅÓå åÓÊÎÏå èãäåÉ åÑèÑ. å×äâ ÇäÅåãÇæêÉ Êãèæ ÈåâÏèÑ 
    åïÊÊÈðÙ ÇäÔñïÙ ääÙËèÑ Ùäé ÇäÕáÍÉ ÇäÔñÙêñÉ ÇäÎÇÕÉ ÈåÏêÑ âÇÙÏÉ ÇäÈêÇæÇÊ 
    èÇäÇæâÖÇÖ Ùäé åÌåä âèÇÙÏ ÈêÇæÇÊã. êåãæã 
    ÇäÅÍÊåÇÁ åæ çÐÇ ÈèÇÓ×É ÊÎèêäÇÊ Apache Ãè ÈÊÕåêå 
    åðæòèÇä ÇäèäèÌ ÇäÎÇÕ Èã ÈÇÓÊÙåÇä LDAP¬ åäáÇÊ &htaccess;¬ ÅäÎ. èÊÖåêæ 
    çÐç ÇäÔêáÑÉ ãÌÒÁ åæ ÓãÑêÈÊÇÊ PHP ÇäÎÇÕÉ Èã. 
   </simpara>
		<simpara>
    áê ÇäÚÇäȬ ÙæÏåÇ êÊå ÅâÑÇÑ ÇäÃåæ ÙæÏ Çäæâ×É ÍêË ÊÑÊÈ× ÈåÓÊÎÏå PHP 
    (áê çÐç ÇäÍÇäɬ åÓÊÎÏå Apache) ÊÈÙÇÊ èÇçêɬ 
    ÓêÊå ÇãÊÔÇá Ãæ PHP ÃÕÈÍ Çäêèå ×ÙåÇ ÖÏ ãÊÇÈÉ ÃêÉ åäáÇÊ 
    áê åÌäÏÇÊ ÇäåÓÊÎÏåêæ. Ãè ÑÈåÇ Êå Ê×Ùêåç ÖÏ èäèÌ âèÇÙÏ ÇäÈêÇæÇÊ 
    Ãè ÇäÊÈÏêä áêçÇ. ÈÇäÊÓÇèê¬ âÏ Êå ÊÃåêæç ÖÏ ãÊÇÈÉ 
    åäáÇÊ Í èÓêÆÉ Ãè ÅÏÎÇä åÙÇåäÇÊ âèÇÙÏ-ÈêÇæêÉ Í èÓêÆÉ. 
   </simpara>
		<simpara>
    çæÇã Î×à Ãåæê ÔÇÆÙ êÊå ÇÑÊãÇÈç ÙæÏ çÐç Çäæâ×É èêÊåËä áê ÇäÓåÇÍ 
    ÈÊÑÇÎêÕ ÌÐÑ Apache Ãè ÊÑâêÉ âÇÈäêÇÊ Apache È×ÑêâÉ 
    åÇ. 
   </simpara>
		<simpara>
    ÊÊÓå ÊÑâêÉ ÊÑÇÎêÕ åÓÊÎÏå Apache äÏÑÌÉ "ÌÐÑ - root" ÈãèæçÇ áÇÆâÉ 
    ÇäÎ×èÑÉ èêåãæçÇ ÊÙÑêÖ Ç俨Çå ÈÃãåäç ääÎ×Ѭ äÐäã áÅæ âÇÈäêÇÊ ÇÓÊÎÏÇå sudo¬ 
    chroot Ãè Ãê ÔêÁ ÂÎÑ åæ åæ×äâ ÇäÌÐÑ äÇ êÌÈ Ãæ ÊÄÎÐ ÈÙêæ ÇäÅÙÊÈÇÑ åæ ÃÌä 
    ÃèäÆã ÇäÐêæ äÇ êÙÊÈÑèæ ÃÎÕÇÆêê Ãåæ. 
   </simpara>
		<simpara>
    çæÇã ÈÖÙÉ Íäèä ÃÈÓ×. åæ ÎäÇä ÇÓÊÙåÇä 
    <link linkend="ini.open-basedir">open_basedir</link>¬ êåãæã åÑÇâÈÉ èÍÕÑ Ãê 
    ÇäåÌäÏÇÊ êïÓòåîÍï ÈÇÓÊÙåÇäçÇ áê PHP. êåãæã ÃêÖÇ ÊÙêêæ  
    åæÇ×â ÍÕÑêÉ Ùäé Apache¬ ÈÚÑÖ ÍÕÑ ãä ÇäæÔÇ× ÇäÔñïÙê ÇäâèÇå Ùäé ÚêÑ-ÇäåÓÊÎÏå (non-user)¬ 
    Ãè ÚêÑ-Ç俨Çå (non-system)¬ ÇäåäáÇÊ. 
   </simpara>
	</sect1>
	<sect1 id="security.filesystem">
		<title>Ãåæ æØÇå ÇäåäáÇÊ</title>
		<simpara>
    êÊÃËÑ PHP ÈÇäÃåæ ÇäåïÔñîêñîÏ Öåæ åÙØå ÃæØåÉ ÇäÎÇÏå 
    ÈÇäÊèÇáâ åÙ ÇäÊÑÇÎêÕ ÇäâÇÆåÉ Ùäé ÃÓÇÓ ÇäåäáÇÊ èÇäåÌäÏÇÊ. êÓåÍ çÐÇ 
    äã ÈåÑÇâÈÉ Ãê ÇäåäáÇÊ Öåæ æØÇå ÇäåäáÇÊ êåãæ âÑÇÁÊçÇ. êÌÈ ÇäÍÐÑ 
    åÙ Ãê åäáÇÊ âÇÈäÉ ääâÑÇÁÉ åæ âðÈîäð Çäãñïä äÖåÇæ 
    ÃæçÇ åèËèâÉ äÊìâòÑîÃ åæ âÈä ãä ÇäåÓÊÎÏåêæ ÇäÐêæ ÈåâÏèÑçå èäèÌ çÐÇ 
    Ç俨Çå ÇäåäáÇÊê. 
   </simpara>
		<simpara>
    åæÐ Ãæ Êå ÊÕåêå PHP ääÓåÇÍ ÈÇäèäèÌ ÈåÓÊèé ÇäåÓÊÎÏå Åäé Ç俨Çå ÇäåäáÇÊê¬ 
    ÃÕÈÍ Èå×äâ ÇäÅåãÇæêÉ ãÊÇÈÉ ÓãÑêÈÊ PHP êÓåÍ äã 
    ÈâÑÇÁÉ åäáÇÊ Ç俨Çå åËä /etc/passwd¬ ÊÙÏêä ÇÊÕÇäÇÊ ethernet ÇäÎÇÕÉ È㬠
    ÅÑÓÇä ÃÔÚÇä ×ÈÇÙÉ ÌåÇÙêɬ ÅäÎ. êÊÖåæ çÐÇ ÈÙÖ 
    ÇäÅÔÊÑÇ×ÇÊ ÇäÌäêñÉ åæ ÍêË Ãæã ÊÍÊÇÌ ääÊÃãÏ Ãæ ÇäåäáÇÊ 
    ÇäÊê ÊâÑà åæçÇ èÊãÊÈ áêçÇ çê ÇäåäáÇÊ Çäå×ÇÈâÉ. 
   </simpara>
		<simpara>
    ÅÙÊÈÑ ÇäÓãÑêÈÊ ÇäÊÇäê ÍêË êÔêÑ åÓÊÎÏå Åäé Ãæç 
    êîèñîÏï ÍÐá åäá åæ åÌäÏç Çäåè׿ê. êáÊÑÖ çÐÇ 
    èÖÙêÉ åÙêæÉ ÍêË ÊÊÓå ÇäèÇÌçÉ ÇäÔñïÙêñîÉ ÇäÎÇÕÉ È PHP ÈãèæçÇ åÓÊÙåäÉ ÈÔãä ÏèÑê ÈÚÑÖ ÊÓêêÑ 
    ÇäåäáÇÊ èÍêË êãèæ åÓåèÍÇ äåÓÊÎÏå Apache ÈÍÐá åäáÇÊ 
    áê ÇäåÌäÏÇÊ Çäåè׿êÉ ääåÓÊÎÏå. 
   </simpara>
		<para>
			<example>
				<title>ÊáâÏ åÊÚêÑ åïÙòÊîä êÄÏê Åäé...</title>
				<programlisting role="php"><![CDATA[
<?php
// æÒÙ åäá åæ ÇäåÌäÏ Çäåè׿ê ÇäÎÇÕ ÈÇäåÓÊÎÏå 
$username = $_POST['user_submitted_name'];
$homedir = "/home/$username";
$file_to_delete = "$userfile";
unlink ("$homedir/$userfile");
echo "Êå ÍÐá $file_to_delete!";
?>
]]></programlisting>
			</example>
   åæÐ ÇäèçäÉ ÇäÊê êãèæ áêçÇ ÅÓå ÇäåÓÊÎÏå âÇÈäÇ ääÅêÏÇÙ Åæ×äÇâÇ åæ æåèÐÌ åÓÊÎÏå¬ êãèæ ÈÇäÅåãÇæ ÊåÑêÑ 
   ÅÓå åÓÊÎÏå èåäá êåäãç ÔÎÕ ÂÎÑ èÈÇäÊÇäê ÍÐá ÇäåäáÇÊ. 
   áê çÐç ÇäÍÇäɬ ÓÊÑÚÈ áê ÇÓÊÙåÇä ÈÙÖ ÃÔãÇä ÃÎÑé äÙåäêÉ ÊÏâêâ ÇäçèêÉ. 
   ÎÐ ÈÙêæ ÇäÅÙÊÈÇÑ åÇ êåãæ Ãæ êÍÏË ÅÐÇ ãÇæÊ ÇäåÊÚêÑÇÊ ÇäåïåîÑñîÑîÉ 
   "../etc/" è "passwd". ÍêæçÇ ÓÊåå âÑÇÁÉ ÇäÔêáÑÉ ÈÔãä áÙäê: 
    <example>
				<title>... çÌèå Ùäé Ç俨Çå ÇäåäáÇÊê</title>
				<programlisting role="php"><![CDATA[
<?php
// æÒÙ åäá åæ Ãê åãÇæ Ùäé ÇäâÑÕ ÇäÕäÈ êãèæ 
// ÈåâÏèÑ åÓÊÎÏå PHP èäèÌç. ÅÐÇ ãÇæ ÈÍèÒÉ PHP ÇäèäèÌ ÇäÌÐÑê: 
$username = "../etc/";
$homedir = "/home/../etc/";
$file_to_delete = "passwd";
unlink ("/home/../etc/passwd");
echo "äâÏ Êå ÍÐá /home/../etc/passwd !";
?>
]]></programlisting>
			</example>
    çæÇã ÊÏÈêÑêæ çÇåêæ Ùäêã ÇÊÎÇÐçåÇ åæ ÃÌä ÊáÇÏê çÐç 
    ÇäåÓÇÆä: 
    <itemizedlist>
				<listitem>
					<simpara>
       áâ× ÅÓåÍ ÈÇäÊÑÇÎêÕ ÇäåÍÏèÏÉ äËæÇÆêÉ ÇäåÓÊÎÏå ÇäÔñïÙêñ ä PHP. 
      </simpara>
				</listitem>
				<listitem>
					<simpara>
       ÊáâñîÏ ãä ÇäåÊÚêÑÇÊ ÇäÊê êÊå ÊåÑêÑçÇ. 
      </simpara>
				</listitem>
			</itemizedlist>
    çæÇ ÊÌÏ ÓãÑêÈÊ åïÍÓñîæ: 
    <example>
				<title>ÊáâÏ ÃãËÑ ÃåæÇ äÅÓå Çäåäá</title>
				<programlisting role="php"><![CDATA[
<?php
// æÒÙ åäá åæ ÇäâÑÕ ÇäÕäÈ êãèæ 
// ÈåâÏèÑ åÓÊÎÏå PHP ÇäèäèÌ Åäêç. 
$username = $_SERVER['REMOTE_USER']; // ÈÇÓÊÙåÇä ÂäêÉ ÊÏâêâ ÇäçèêÉ 

$homedir = "/home/$username";

$file_to_delete = basename("$userfile"); // åÓÇÑÇÊ åæÒèÙÉ 
unlink ($homedir/$file_to_delete);

$fp = fopen("/home/logging/filedelete.log","+a"); //ÊÏèêæ ÇäÍÐá
$logstring = "$username $homedir $file_to_delete";
fputs ($fp, $logstring);
fclose($fp);

echo "äâÏ Êå ÍÐá $file_to_delete !";
?>
]]></programlisting>
			</example>
    åÙ Ðä㬠áÍÊé çÐÇ äÇ êÎäè åæ ÇäæâÇÆÕ. ÅÐÇ ãÇæ æØÇå ÊÏâêâ ÇäçèêÉ äÏêã 
    êÓåÍ ääåÓÊÎÏåêæ ÈÎäâ åïÏèæÇÊ ÏÎèä åÓÊÎÏå ÎÇÕÉ Èçå¬ èÇÎÊÇÑ ÃÍÏ ÇäåÓÊÎÏåêæ 
    åïÏèðæÉ ÇäÏÎèä "../etc/"¬ áÅæ Ç俨Çå êÕÈÍ åÑÉ ÃÎÑé åïÙÑñÖÇ. äçÐÇ 
    ÇäÓÈȬ ÑÈåÇ Ãæã ÊáÖä ÇäãÊÇÈÉ åæ ÃÌä ÇäÍÕèä Ùäé ÊáâÏ ÃãËÑ ÔÎÕæÉ: 
    <example>
				<title>ÊáâÏ ÃãËÑ ÃåæÇ äÅÓå Çäåäá</title>
				<programlisting role="php"><![CDATA[
<?php
$username = $_SERVER['REMOTE_USER']; // ÈÇÓÊÙåÇä ÂäêÉ ÊÏâêâ ÇäçèêÉ
$homedir = "/home/$username";

if (!ereg('^[^./][^/]*$', $userfile))
     die('bad filename'); //ÅåÇÊɬ ÙÏå ÇäåÙÇäÌÉ

if (!ereg('^[^./][^/]*$', $username))
     die('bad username'); //ÅåÇÊɬ ÙÏå ÇäåÙÇäÌÉ
//etc...
?>
]]></programlisting>
			</example>
		</para>
		<para>
    ÈÍÓÈ æØÇåã ÇäÊÔÚêäê¬ ÊèÌÏ ÊÔãêäÉ èÇÓÙÉ åæ ÇäåäáÇÊ 
    ÇäÊê êÌÈ Ãæ ÊçÊå ÈÎÕèÕçǬ ÈåÇ áê åÏÇÎä ÇäÃÌçÒÉ (/dev/
    Ãè COM1)¬ åäáÇÊ ÇäÊçêÆÉ (åäáÇÊ /etc/ èåäáÇÊ .ini)¬ 
    åæÇ×â ÊÎÒêæ ÇäåäáÇÊ ÇäåÙÑèáÉ ÌêÏÇ (/home/¬ ÇäåÓÊæÏÇÊ)¬ ÅäÎ. äçÐÇ 
    ÇäÓÈȬ áÅæç áê ÇäÙÇÏÉ åæ ÇäÃÓçä Îäâ ÓêÇÓÉ ÍêË ÊîÍòØïÑ 
    ãä ÔêÁ åÇ ÙÏÇ åÇ ÊÓåÍ Èç ÕÑÇÍÉ. 
   </para>
	</sect1>
	<sect1 id="security.database">
		<title>Ãåæ âÇÙÏÉ ÇäÈêÇæÇÊ</title>
		<simpara>
    áê çÐç ÇäÃêÇå¬ ÊÊÓå âèÇÙÏ ÇäÈêÇæÇÊ ÈãèæçÇ åãèæÇÊ ÑÆêÓêÉ äÃê Ê×Èêâ ÔïÙêñ ÇäâðèÇå åæ ÎäÇä 
    ÊáÙêäçÇ âÇÈäêÉ ÇäåèÇâÙ ÇäÔñïÙêñîÉ ääÊÒèêÏ ÈåÖåèæ Íêèê åÊæèÙ. ÍÊé ÇäåÙäèåÇÊ ÇäÌÏ ÍÓÇÓÉ 
    Ãè ÇäÓñÑêñÉ êåãæ ÊÎÒêçÇ áê åËä çÐç ÇäâÇÙÏÉ ÇäÈêÇæêɬ äÐäã Ùäêã ÇäÃÎÐ ÈÙêæ ÇäÅÙÊÈÇÑ èÈâèÉ 
    åÓÃäÉ ÍåÇêÊçÇ È×ÑêâÉ Ãè ÈÃÎÑé. 
   </simpara>
		<simpara>
    åæ ÃÌä ÇÓÊÑÌÇÙ Ãè ÊÎÒêæ ÃêÉ åÙäèåɬ ÊÍÊÇÌ ääÅÊÕÇä ÈâÇÙÏÉ ÇäÈêÇæÇʬ 
    ÅÑÓÇä ÅÓÊáçÇå åÔÑèÙ¬ ÅÓÊÍÖÇÑ ÇäæÊêÌÉ èÅÚäÇâ ÇäÅÊÕÇä. 
    áê çÐç ÇäÃêÇå¬ äÚÉ ÇäÅÓÊáçÇå ÇäåÓÊÙåäÉ ÈÔãä åÃäèá áê çÐÇ ÇäÊáÇÙä çê  
    äÚÉ ÇäÅÓÊáçÇå Çäåïçêãä (SQL). ÅÓÊÙÑÖ ãêá êÓÊ×êÙ åçÇÌå <link linkend="security.database.sql-injection">ÇäÊäÇÙÈ ÈÇÓÊáçÇå SQL</link>. 
   </simpara>
		<simpara>
    åËäåÇ êåãæã ÊÕèÑç¬ äÇ êÓÊ×êÙ PHP ÍåÇêÉ âÇÙÏÉ ÈêÇæÇÊã ÈÐÇÊç. 
    ÇäåâÇ×Ù ÇääÇÍâÉ Ê×åÍ äÃæ Êãèæ åâÏåÉ âÇÙÏêÉ ÈÎÕèÕ ãêáêÉ 
    ÇäèäèÌ èÇäÊÙÇåä åÙ âèÇÙÏ ÇäÈêÇæÇÊ Öåæ ÓãÑêÈÊÇÊ PHP. 
   </simpara>
		<simpara>
    ÊÐãÑ çÐç ÇäâÇÙÏÉ ÇäÈÓê×É: ÇäÏáÇÙ åæ ÇäÙåâ. áê ÇäåãÇæ ÇäÐê 
    ÊæÔ× áêç ÃãËÑ åæ ÃÌä ÊÏÙêå ÍåÇêÉ âÇÙÏÊã ÇäÈêÇæêɬ ááêç Êãèæ 
    ÅÍÊåÇäÇÊ Ãæ êïãäñîä åçÇÌå åÇ ÈÇäæÌÇÍ èêÓÊÙÑÖ Ãè êÊÙÓá åÙ ÃêÉ åÙäèåÇÊ ÓÑêÉ åïÎîÒñîæîÉ Ãâä. 
    ÇäÊÕåêå ÇäÌêñðÏ äÊÎ×ê× âÇÙÏÉ ÇäÈêÇæÇÊ èãÐÇ ÇäÈÑæÇåÌ 
    çè ÇäÐê êÊÙÇ×é åÙ ÃÙØå åÎÇèáã. 
   </simpara>
		<sect2 id="security.database.design">
			<title>ÊÕåêå âèÇÙÏ ÇäÈêÇæÇÊ</title>
			<simpara>
      ÇäÎ×èÉ ÇäÃèäé çê ÏÇÆåÇ Îäâ âÇÙÏÉ ÇäÈêÇæÇʬ ÅäÇ ÅÐÇ ãæÊ ÊèÏ ÇÓÊÙåÇä 
      âÇÙÏÉ ÈêÇæÇÊ åèÌèÏÉ èååäèãÉ ä×Ñá åÚÇêÑ. ÙæÏ Îäâ âÇÙÏÉ ÈêÇæÇʬ êÊå 
      ÊÙêêæçÇ äåÇäã åǬ Ðäã ÇäÐê æáÐ ÈäÇÚ ÇäÎäâ. áê ÇäÙÇÏɬ áâ× 
      ÇäåÇäã (Ãè ÇäåÓÊÎÏå ÇäÃÙØå) êåãæç ÇäâêÇå Èãä åÇ êÑêÏ ÈÇäãÇÆæÇÊ áê Êäã 
      ÇäâÇÙÏÉ ÇäÈêÇæêɬ èåæ ÃÌä ÇäÓåÇÍ ääåÓÊÎÏåêæ ÇäÂÎÑêæ ÈÇÓÊÙåÇäçǬ áêÌÈ 
      åæÍç ÇåÊêÇÒÇÊ Ðäã. 
     </simpara>
			<simpara>
      äÇ êÌÈ ÈÊÇÊÇ Ãæ ÊÊÕä ÇäÊ×ÈêâÇÊ ÈâÇÙÏÉ ÇäÈêÇæÇÊ Ùäé ÃæçÇ åîÇäðã 
      Ãè åÓÊÎÏå ÃÙØå äÃæ çÄäÇÁ ÇäåÓÊÎÏåêæ êåãæçå ÊæáêÐ Ãê ÇÓÊáçÇå äåÌÑÏ ÇäÑÚÈɬ åËäÇ: 
      ÊÙÏêä ÇäÊÎ×ê× (åËä ÇæÊÒÇÙ ÌÏÇèä) Ãè ÍÐá 
      åÌåä åÖåèæçÇ. 
     </simpara>
			<simpara>
      ÈÅåãÇæã Îäâ åÓÊÎÏåêæ åÎÊäáêæ äâÇÙÏÉ ÇäÈêÇæÇÊ ÈÍÓÈ ãä åØçÑ åæ åØÇçÑ 
      Ê×Èêâã ÈÍâèâ åÍÏèÏÉ Ùäé ãÇÆæÇÊ ÇäâÇÙÏÉ ÇäÈêÇæêÉ. ÃãËÑ 
      ÇäÅåÊêÇÒÇÊ ×äÈÇ çê áâ× ÇäÊê êÌÈ åæÍçÇ ãåÇ êÌÈ ÊáÇÏê Ãæ 
      êÊåãæ æáÓ ÇäåÓÊÎÏå åæ ÇäÊáÇÙä åÙ ÇäâÇÙÏÉ ÇäÈêÇæêÉ áê ÍÇäÇÊ ÇÓÊÎÏÇå åÎÊäáÉ. êÙæê çÐÇ Ãæç ÅÐÇ 
      æÌÍ åÊÓääèæ áê ÇäèäèÌ Åäé âÇÙÏÊã ÇäÈêÇæêÉ ÈÇÓÊÙåÇä ÅÍÏé çÐç ÇäÅÓÊÙåÇäÇʬ 
      áÅæ ÇäÊÚêêÑÇÊ ÇäÊê êÓÊ×êÙèæ ÅÍÏÇËçÇ çê áâ× ÈåâÏÇÑ ÅÓÊ×ÇÙÉ ÇäÊ×Èêâ. 
     </simpara>
			<simpara>
      äÇ æïÔÏñðÏ ÙÒåã Ùäé ÅÏÑÇÌ ãä Çäåæ×â ÇäÙåäê áê ÇäÊ×Èêâ 
      ÇäÔñÙêñ (Ãê ÇäÓãÑêÈÊ ÇäÎÇÕ Èã)¬ ãÈÏêä ääâêÇå ÈÐäã ÙæÏ ÊÎ×ê× ÇäâÇÙÏÉ ÇäÈêÇæêÉ 
      åæ ÎäÇä ÇÓÊÙåÇä ÇäåÔÇçϬ ÇäÒðæÇÏÇÊ Ãè ÇäâèÇÙÏ. ÅÐÇ Ê×èÑ Ç俨Çå¬ áÅæ åæÇáÐ ÌÏêÏÉ Åäé ÇäâÇÙÏÉ ÇäÈêÇæêÉ 
      Óêïæòèîé áÊÍçÇ èÓêÊèÌÈ Ùäêã ÅÙÇÏÉ ÅÏÑÇÌ Çäåæ×â 
      Öåæ ãä ÒÈèæ åæáÕä ääâÇÙÏÉ ÇäÈêÇæêÉ. ÙäÇèÉ Ùäé Ðä㬠áÅæç êåãæ ÇÓÊÙåÇä ÇäÒæÇÏÇÊ 
      ÈÚÑÖ ÇäÊÙÇåä åÙ ÇäÍâèä ÈÕèÑÉ ÔáÇáÉ èÂäêÉ ååÇ êÒêÏ ÚÇäÈÇ áê 
      ÇäÊÈÕñïÑ ÙæÏ åÔÇãä ÅÒÇäÉ ÇäÙðää ÈÊ×Èêâã Ãè ÙæÏ ÇäÊñîÊÈñïÙ ÇäÑÌÙê 
      ääåÙÇåäÇÊ. 
     </simpara>
		</sect2>
		<sect2 id="security.database.connection">
			<title>ÇäÅÊÕÇä ÈÇäâÇÙÏÉ ÇäÈêÇæêÉ</title>
			<simpara>
     ÑÈåÇ ÊèÏ ÅÊåÇå ÇäÅÑÊÈÇ×ÇÊ ÙÈÑ ×ÈâÉ ÇäèÕäÉ ÇäÂåæÉ (SSL) äÊÔáêÑ 
     ÇäÅÊÕÇäÇÊ ÇäÒÈèæ/ÇäÎÇÏå ÈÚÑÖ ÇäÍÕèä Ùäé Ãåæ åïÙîÒñîÒ Ãè ÍÊé êåãæã ÇÓÊÙåÇä ssh 
     äÊÔáêÑ ÇäÑÈ× ÇäÔÈãêñ Èêæ ÇäÒÈÇÆæ èÎÇÏå ÇäâÇÙÏÉ ÇäÈêÇæêÉ. 
     ÅÐÇ Êå ÇäâêÇå ÈÅÍÏé ÇäÎ×èÊêæ¬ áÅæ ÇäÊÍãå áê ÇäåÑèÑ èÇÓÊÍÕÇä 
     ÇäåÙäèåÇÊ ÈçÐç Çä×ÑêâÉ ÓêÔãä ÙåäÇ ÔÇâÇ. 
    </simpara>
			<!--simpara>
     ÅÐÇ ãÇæ ÎÇÏå âÇÙÏÊã ÇäÈêÇæêÉ êÊèáÑ Ùäé ÏÙå ÃÕäê ä×ÈâÉ ÇäèÕäÉ ÇäÂåæÉ (SSL)¬ áÎÐ ÈÙêæ ÇäÅÙÊÈÇÑ åÓÃäÉ ÇÓÊÙåÇä <link
     linkend="ref.openssl">ÏèÇä OpenSSL</link> áê ÇäÅÊÕÇä Èêæ 
     PHP èÇäâÇÙÏÉ ÇäÈêÇæêñÉ ÙÈÑ ×ÈâÉ ÇäèÕäÉ ÇäÂåæÉ (SSL). 
    </simpara-->
		</sect2>
		<sect2 id="security.database.storage">
			<title>×ÑÇÒ ÇäÊÎÒêæ ÇäåïÔáñîÑ</title>
			<simpara>
     Êâèå ×ÈâÉ ÇäèÕäÉ ÇäÂåæÉ / SSH ÈÍåÇêÉ ÓáÑ ÇäÈêÇæÇÊ åæ ÙæÏ ÇäÒÈèæ Åäé ÇäÎÇÏå» ×ÈâÉ ÇäèÕäÉ ÇäÂåæÉ / SSH 
     äÇ Êâèå ÈÍåÇêÉ ÇäÈêÇæÇÊ ÇäåÏÇèåÉ ÇäåÎÒæÉ áê âÇÙÏÉ ÈêÇæêñÉ åÇ. ÊÊÓå ×ÈâÉ ÇäèÕäÉ ÇäÂåæÉ (SSL) ÈãèæçÇ 
     ÙÈÇÑÉ Ùæ åÑÇÓêå ÓðäãêñÉ ÇäâèÇå. 
    </simpara>
			<simpara>
     ÈåÌÑÏ åÇ êïáòäðÍ åçÇÌå åÇ áê ÇäèäèÌ ÇäåÈÇÔÑ Åäé âÇÙÏÊã ÇäÈêÇæêÉ (ÊÌÇèÒ 
     ÇäÎÇÏå ÇäÔñÙêñ)¬ áÅæ ÇäÈêÇæÇÊ ÇäÍÓÇÓÉ ÇäåÎÒæÉ êåãæ Ãæ ÊÕÈÍ ÖÍêÉ ääÙÑÖ Ãè äÓèÁ ÇäÅÓÊÙåÇä¬ ÅäÇ 
     ÅÐÇ ÊåÊ ÍåÇêÉ ÇäåÙäèåÇÊ åæ âÈä ÇäâÇÙÏÉ ÇäÈêÇæêñÉ æáÓçÇ. Åæñ ÊÔáêÑ ÇäÈêÇæÇÊ 
     çè ×ÑêâÉ ÌêñÏÉ äÊÎáêá ÇäÊçÏêÏ äãæ âäêäÉ çê ÇäâèÇÙÏ ÇäÈêÇæêÉ ÇäÊê ÊèáÑ çÐÇ 
     ÇäæèÙ åæ ÇäÊÔáêÑ ÇäÈêÇæê. 
    </simpara>
			<simpara>
     ÃÓçä ×ÑêâÉ äÍäñ çÐç ÇäåÔãäÉ çê ÃèäÇ ÅæÔÇÁ 
     ÍÒåÊã ÇäÊÔáêÑêñÉ ÇäÎÇÕÉ èåæ Ëå ÇÓÊÙåÇäçÇ Öåæ ÓãÑêÈÊÇÊ PHP ÇäÎÇÕÉ Èã. êåãæ ä PHP Ãæ ÊÙêæã¬ 
     áê çÐç ÇäÍÇäɬ ÈÊèÓÙÇÊçÇ ÇäÙÏêÏɬ åËä <link linkend="ref.mcrypt">Mcrypt</link> è <link linkend="ref.mhash">Mhash</link>¬ ÇäÊê ÊÔÊåä ÊÔãêäÉ èÇÓÙÉ åæ 
     ÎèÇÑÒåêÇÊ ÇäÊñÔáêÑ. êâèå ÇäÓãÑêÈÊ ÈÊÔáêÑ ÇäÈêÇæÇÊ ÇäåèÌçÉ ääÊÎÒêæ ÃèäÇ èÅÒÇäÉ ÊÔáêÑçÇ 
     ÙæÏ ÇäÅÓÊÑÏÇÏ. Å×äÙ Ùäé ÇäåèÇÑÏ åæ ÃÌä ÇäÍÕèä Ùäé ÃåËäÉ ÃãËÑ ÈÎÕèÕ 
      ãêáêÉ Ùåä ÇäÊÔáêÑ. 
    </simpara>
			<simpara>
     áê ÍÇäÉ ÈêÇæÇÊ åÎáêÉ áÙäǬ èÅÐÇ ãÇæ ÊåËêäçÇ ÇäÎÇå äÇ êïÍÊÇÌ Åäêç 
     (Ãê äÇ ÊïÙòÑîÖ)¬ áêåãæ ääÊÌÒÆÉ ÃêÖÇ Ãæ ÊïÃÎÐ ÈÙêæ ÇäÅÙÊÈÇÑ. 
     åËÇä ÇäÊÌÒÆÉ ÇäåÙÑèá ÌêÏÇ çè ÊÎÒêæ ÊÌÒÆÉ MD5 ÇäÎÇÕÉ 
     ÈãäåÉ åÑèÑ áê âÇÙÏÉ ÈêÇæêɬ ÈÏäÇ åæ ãäåÉ ÇäåÑèÑ æáÓçÇ. Å×äÙ ÃêÖÇ Ùäé 
     <function>crypt</function> è <function>md5</function>. 
    </simpara>
			<example>
				<title>ÅÓÊÙåÇä Íâä ãäåÉ ÇäåÑèÑ ÇäåÌÒÃÉ</title>
				<programlisting role="php"><![CDATA[
// ÊÎÒêæ ÊÌÒÆÉ ãäåÉ ÇäåÑèÑ
$query  = sprintf("INSERT INTO users(name,pwd) VALUES('%s','%s');",
            addslashes($username), md5($password));
$result = pg_exec($connection, $query);

// ÇäÅÓÊáçÇå ÅÐÇ âÇå ÇäåÓÊÎÏå ÈÊåÑêÑ ãäåÉ ÇäåÑèÑ ÇäÕÍêÍÉ 
$query = sprintf("SELECT 1 FROM users WHERE name='%s' AND pwd='%s';",
            addslashes($username), md5($password));
$result = pg_exec($connection, $query);

if (pg_numrows($result) > 0) {
    echo "Welcome, $username!";
}
else {
    echo "áÔä ÇäÊÍââ åæ çèêÉ $username.";
}
]]></programlisting>
			</example>
		</sect2>
		<sect2 id="security.database.sql-injection">
			<title>ÍâæÉ SQL</title>
			<simpara>
     ÇäÙÏêÏ åæ Çäå×èÑêæ ÇäÔñïÙêñêæ ÚêÑ ÏÇÑãêæ ääãêáêÉ ÇäÊê êåãæ ÈçÇ ÇäÊäÇÙÈ ÈÇÓÊáçÇåÇÊ SQL 
     èêÒÙåèæ Ãæ ÇÓÊáçÇå SQL çè ÃåÑ åèËèâ åæç. êÙæê çÐÇ Ãæ 
     ÇÓÊáçÇåÇÊ SQL ÈÇÓÊ×ÇÙÊçÇ ÇäÊÍÇêä Ùäé ÊÍãåÇÊ ÇäèäèÌ èåæ çæÇ ÊÌÇèÒ ÇäÊÍââ ÇäåâêÇÓê åæ ÇäçèêÉ 
     èÊáâÏÇÊ ÇäÊÎèêä èÃÍêÇæÇ¬ ÍÊé ÇÓÊáçÇåÇÊ SQL 
     êåãæçÇ ÇäÓåÇÍ ÈÇäèäèÌ Åäé ÃèÇåÑ åÓÊèé æØÇå ÇäÊÔÚêä ÇäåÖêá. 
    </simpara>
			<simpara>
     Íâæ ÃåÑ SQL åÈÇÔÑ çè ÙÈÇÑÉ Ùæ ÊâæêÉ êâèå ÇäåçÇÌå áêçÇ ÈÅæÔÇÁ Ãè 
     ÊÍèêÑ ÃèÇåÑ SQL åèÌèÏÉ åæ ÃÌä ÙîÑòÖ ÈêÇæÇÊ åÎáêÉ Ãè ÓÍâ åÙäèåÇÊ ËåêæÉ 
     Ãè ÍÊé ÊæáêÐ ÃèÇåÑ Î×êÑÉ åæ åÓÊèé Ç俨Çå Ùäé åÖêá ÇäâÇÙÏÉ ÇäÈêÇæêÉ. 
     êÊå çÐÇ Ùäé êÏ ÇäÊ×Èêâ ÈÊæÇèäç äåïÏÎä ÇäåÓÊÎÏå  Ëå 
     ÏåÌç ÅêÇç ÈÇäåïÙòäîåîÇÊ ÇäËÇÈÊÉ ÈÚÑÖ ÊÔêêÏ ÅÓÊáçÇå SQL. ÇäÃåËäÉ 
     ÇäÊÇäêÉ Êâèå Ùäé ÃÓÇÓ âÕÕ Íâêâêɬ ääÃÓá. 
    </simpara>
			<para>
     æØÑÇ äæâÕ áê ÊÕÏêâ ÇäåïÏÎä èÙæÏ ÇäÅÊÕÇä ÈÇäâÇÙÏÉ ÇäÈêÇæêÉ 
     èãÃæç ÇäåÓÊÎÏå ÇäÃÙØå Ãè ÃÍÏ ÇäÐêæ ÈÅåãÇæçå ÅæÔÇÁ ÇäåÓÊÎÏåêæ¬ êåãæ ääåçÇÌå 
     Ãæ êïæòÔðÆ åÓÊÎÏåÇ ÃÙØåÇ áê âÇÙÏÊã ÇäÈêÇæêÉ. 
     <example>
					<title>
       ÊâÓêå åÌåèÙÉ ÇäæÊÇÆÌ Ùäé ÕáÍÇÊ... èÅÍÏÇË åÓÊÎÏåêæ ÃÙÇØå 
       (PostgreSQL è MySQL)
      </title>
					<programlisting role="php"><![CDATA[
$offset = argv[0]; // ÍÐÇÑê¬ äÇ ÊÕÏêâ Ùäé ÇäåïÏÎîä!
$query  = "SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET $offset;";
// with PostgreSQL 
$result = pg_exec($conn, $query);
// Èà MySQL
$result = mysql_query($query);
]]></programlisting>
				</example>
      êÖÚ× ÇäåÓÊÎÏåèæ ÇäÙÇÏêñèæ Ùäé ÑèÇÈ× 'äÇÍâ'¬ 'ÓÇÈâ' ÍêË Êãèæ <varname>$offset</varname> 
      åïÔáñÑÉ Öåæ åÍÏÏ ÇäåèÑÏ ÇäåÊÔÇãä. ÇäÓãÑêÈÊ êÊèâÙ Ãæ 
      <varname>$offset</varname> ÇäèÇÑÏÉ çê ÙÈÇÑÉ Ùæ ÙÏÏ ÙÔÑê. åÙ Ðä㬠ÍÇèä ÃÍÏçå 
      ãÓÑç ÈÅäÍÇâ ÇäÊÇäê Ùäé Ôãä <function>urlencode</function>
      ÈåÍÏÏ ÇäåèÑÏ ÇäåÊÔÇãä 
      <informalexample>
					<programlisting><![CDATA[
// áê ÍÇäÉ PostgreSQL
0;
insert into pg_shadow(usename,usesysid,usesuper,usecatupd,passwd)
    select 'crack', usesysid, 't','t','crack'
    from pg_shadow where usename='postgres';
--

// áê ÍÇäÉ MySQL
0;
UPDATE user SET Password=PASSWORD('crack') WHERE user='root';
FLUSH PRIVILEGES;
]]></programlisting>
				</informalexample>
      ÅÐÇ ÍÕä¬ ÙæÏçÇ ÓêïâÏðå ÇäÓãÑêÈÊ äç èäèÌ åÓÊÎÏå ÃÙØå. 
      ÊÐãÑ Ãæ <literal>0;</literal> çê äÇÓÊÈÏÇä ÇäÅÓÊáçÇå ÇäÃÕäê ÈÅÒÇÍÉ ÕÇäÍÉ 
      èÅæçÇÆç. 
    </para>
			<note>
				<para>
      Åæ ÅÌÈÇÑ åÙÇäÌ SQL Ùäé ÊÌÇçä ÈâêÉ ÇäÅÓÊáçÇå ÇäåãÊèÈ åæ âÈä 
      Çäå×èÑ çè ÊâæêÉ åÃäèáÉ. çÐÇ ÇäÊÌÇçä êÊå ÈèÇÓ×É <literal>--</literal> 
      ÇäÊê áê SQL¬ çê ÙÈÇÑÉ Ùæ ÙäÇåÉ ÊÙäêâ. 
     </para>
			</note>
			<para>
     çæÇã ×ÑêâÉ ååãæÉ äÇÓÊÍÕÇä ãäåÇÊ ÇäåÑèÑ ÊÊåËä áê ÇäÊÍÇêä Ùäé ÕáÍÇÊã äæÊÇÆÌ ÇäÈÍË. 
     åÇ êÍÊÇÌ Åäêç ÇäåçÇÌå áâ× çè åÍÇèäÉ åÙÑáÉ ÅÐÇ ãÇæ çæÇã Ãê åÊÚêÑ åïåÑñîÑ 
     êÊå ÇÓÊÙåÇäç áê ÈäÇÚ SQL èäÇ êÊå ÇäÊÙÇåä åÙç ÈÇäÔãä ÇäåäÇÆå. áê ÇäÙÇÏɬ çÐç ÇäåïÑîÔðÍÇÊ êåãæ ÊÍÏêÏçÇ 
     áê æåèÐÌ åïÓòÈîâ äÔÎÕæÉ ÈæèÏ <literal>WHERE¬ ORDER BY¬ 
     LIMIT</literal> è <literal>OFFSET</literal> áê ÈäÇÚÇÊ <literal>SELECT</literal>. 
     ÅÐÇ ãÇæÊ âÇÙÏÊã ÇäÈêÇæêñÉ ÊÏÙå ÈæÇÁ <literal>UNION</literal>¬ 
     áêåãæ ääåçÇÌå Ãæ êÍÇèä ÅäÍÇâ ÇÓÊáçÇå ãÇåä ÈÇäÅÓÊáçÇå ÇäÃÕäê ÈÚÑÖ ÙÑÖ äÇÆÍÉ 
     ãäåÇÊ ÇäåÑèÑ Åæ×äÇâÇ åæ ÌÏèä ÅÙÊÈÇ×ê. Åæ ÇÓÊÙåÇä Íâèä ÇäãäåÇÊ ÇäåÑèÑêÉ ÇäåÔáÑÉ 
     çè ÃåÑ êïÔîÌñîÙï Ùäêç èÈÔÏÉ. 
     <example>
					<title>
       ÅÓÊÎÑÇÌ ÇäåèÇÏ ... èÈÙÖ ÇäãäåÇÊ ÇäåÑèÑêñÉ (Ãîêñ ÎÇÏå ÇäâÇÙÏÉ ÇäÈêÇæêñÉ) 
      </title>
					<programlisting role="php"><![CDATA[
$query  = "SELECT id, name, inserted, size FROM products
                  WHERE size = '$size'
                  ORDER BY $order LIMIT $limit, $offset;";
$result = odbc_exec($conn, $query);
]]></programlisting>
				</example>
     ÇäÌÒÁ ÇäËÇÈÊ åæ ÇäÅÓÊáçÇå êåãæ åÒÌç 
     ÈÈäÇÚ <literal>SELECT</literal> ÂÎÑ ååÇ êïáÕðÍ Ùæ ã ÇäãäåÇÊ ÇäåÑèÑêñÉ: 
     <informalexample>
					<programlisting><![CDATA[
'
union select '1', concat(uname||'-'||passwd) as name, '1971-01-01', '0' from usertable;
--
]]></programlisting>
				</informalexample>
     ÅÐÇ Êå ÊÙêêæ çÐÇ ÇäÅÓÊáçÇå (ÇäÊäÇÙÈ Èà <literal>'</literal> è 
     <literal>--</literal>) äÅÍÏé ÇäåÊÚêñÑÇÊ ÇäåïÓòÊîÙòåîäîÉ áê 
     <varname>$query</varname>¬ áÅæ åÖÇÑ ÇäÅÓÊáçÇå ÊÖÙá. 
    </para>
			<para>
     ÊÍÏêËÇÊ SQL çê ÃêÖÇ åïÙîÑñÖÉ ÙæÏ ÇäçÌèå Ùäé âÇÙÏÊã ÇäÈêÇæêÉ. çÐç ÇäÅÓÊáçÇåÇÊ çê 
     ÃêÖÇ åïçÏÏñÉ åæ ÎäÇä ÇâÊ×ÇÙ èÅäÍÇâ ÇÓÊáçÇå ÌÏêÏ ÈÃãåäç ÅäêçÇ. äãæ 
     ÈÅåãÇæ ÇäåçÇÌå ÇäÊäÇÙÈ ÈÈæÏ <literal>SET</literal>. áê çÐç 
     ÇäÍÇäɬ êÌÈ ÇåÊäÇã ÈÙÖ ÇäåÙäèåÇÊ ÇäÊÎ×ê×êñÉ ÈÚÑÖ ÇäÊÙÇåä åÙ ÇäÅÓÊáçÇå ÈÔãä æÇÌÍ. 
     êåãæ ÇäÍÕèä Ùäé çÐÇ åæ ÎäÇä ÊáÍÕ ÃÓåÇÁ åÊÚêÑÇÊ ÇäæåèÐÌ Ãè 
     ÈÈÓÇ×É åæ ÎäÇä ÇäÅäÒÇå ÇäâÓÑê. äêÓÊ çæÇã ÇäÙÏêÏ åæ ÅÕ×äÇÍÇÊ ÊÓåêÉ 
     ÇäÍâèä ÇäÎÇÕÉ ÈÊÎÒêæ ÇäãäåÇÊ ÇäåÑèÑêñÉ Ãè ÃÓåÇÁ ÇäåÓÊÎÏåêæ. 
     <example>
					<title>
      åæ ÅÙÇÏÉ ÊÙêêæ ãäåÉ åÑèÑêñÉ ... Åäé ÇÓÊÍÕÇä åÒêÏ åæ ÇäÅåÊêÇÒÇÊ (Ãê ÎÇÏå äâÇÙÏÉ ÈêÇæêñÉ) 
     </title>
					<programlisting role="php"><![CDATA[
$query = "UPDATE usertable SET pwd='$pwd' WHERE uid='$uid';";
]]></programlisting>
				</example>
     äãæ åÓÊÎÏåÇ ÂËåÇ ÓêåÑÑ ÇäâêåÉ 
     <literal>' or uid like'%admin%'; --</literal> Åäé <varname>$uid</varname> ÈÚÑÖ 
     ÊÚêêÑ ãäåÉ åÑèÑ ÇäåÏêÑ Ãè ÈÈÓÇ×É ÊÍÏêÏ <varname>$pwd</varname> Èà
     <literal>"hehehe', admin='yes', trusted=100 "</literal> (ÈáÑÇÚ 
     Îäáêñ) åæ ÃÌä ÇÓÊÍÕÇä åÒêÏ åæ ÇäÅåÊêÇÒÇÊ. ÍêæçÇ ÓêÊå ÊÍÑêá ÇäÅÓÊáçÇå: 
     <informalexample>
					<programlisting role="php"><![CDATA[
// $uid == ' or uid like'%admin%'; --
$query = "UPDATE usertable SET pwd='...' WHERE uid='' or uid like '%admin%'; --";

// $pwd == "hehehe', admin='yes', trusted=100 "
$query = "UPDATE usertable SET pwd='hehehe', admin='yes', trusted=100 WHERE ...;"
]]></programlisting>
				</informalexample>
			</para>
			<para>
     åËÇä åÎêá Ùæ ãêáêÉ èäèÌ ÃèÇåÑ åÓÊèé æØÇå ÇäÊÔÚêä 
     Ùäé ÈÙÖ åÖêáê ÇäâèÇÙÏ ÇäÈêÇæêÉ. 
     <example>
					<title>ÇäçÌèå Ùäé æØÇå ÇäÊÔÚêä ÇäÎÇÕ ÈåÖêá ÇäâÇÙÏÉ ÇäÈêÇæêÉ (ÎÇÏå MSSQL)</title>
					<programlisting role="php"><![CDATA[
$query  = "SELECT * FROM products WHERE id LIKE '%$prod%'";
$result = mssql_query($query);
]]></programlisting>
				</example>
     ÅÐÇ âÇå ÇäåçÇÌå ÈÊåÑêÑ ÇäâêåÉ 
     <literal>a%' exec master..xp_cmdshell 'net user test testpass /ADD' --</literal>
     Åäé <varname>$prod</varname>¬ ÍêæçÇ ÓÊÕÈÍ <varname>$query</varname>: 
     <informalexample>
					<programlisting role="php"><![CDATA[
$query  = "SELECT * FROM products
                    WHERE id LIKE '%a%'
                    exec master..xp_cmdshell 'net user test testpass /ADD'--";
$result = mssql_query($query);
]]></programlisting>
				</informalexample>
     êæáÐ ÎÇÏå MSSQL ÈäÇÚÇÊ SQL ÈÇäÏïáÙÉ ÈåÇ áê Ðäã ÃåÑÇ 
     äÅÖÇáÉ åÓÊÎÏå ÌÏêÏ Åäé ÇäâÇÙÏÉ ÇäÈêÇæêñÉ ÇäÎÇÕÉ ÈÇäÍðÓÇÈÇÊ ÇäåÍäêñÉ. ÅÐÇ ãÇæ çÐÇ ÇäÊ×Èêâ 
     êÙåä Ùäé Ãæñç <literal>sa</literal> èÎÏåÉ MSSQLSERVER 
     ÊÙåä ÈÅåÊêÇÒÇÊ ãÇáêñɬ áÓêÕÈÍ ÈÍêÇÒÉ ÇäåçÇÌå ÇäÂæ 
     ÍÓÇÈÇ êäÌ Èç çÐÇ ÇäÌçÇÒ. 
    </para>
			<note>
				<para>
      ÈÙÖÇ åæ ÇäÃåËäÉ áê ÇäÃÙäé ÊÊÙäâ ÈÎÇÏå åÙêñæ ääâèÇÙÏ ÇäÈêÇæêñÉ. äÇ 
      êÙæê çÐÇ Ãæ çÌèåÇ ååÇËäÇ êÙÊÈÑ åÓÊÍêäÇ ÖÏ åæÊèÌÇÊ ÃÎÑé. 
      ÎÇÏåã ääâèÇÙÏ ÇäÈêÇæêñÉ êåãæ Ãæ êãèæ ÚêÑ ÍÕêæ Ùäé æÍè åÚÇêÑ. 
     </para>
			</note>
			<sect3 id="security.database.avoiding">
				<title>ÊâæêÇÊ ÇäÊäÇáê</title>
				<simpara>
      êåãæã ÇäÅÏÙÇÁ ÃèäÇ Ãæ ÇäåçÇÌå äÇ ÈÏ èÃæç ãÇæ êåÊäã åÙäèåÉ åÇ 
      ÈÎÕèÕ ÊÎ×ê× ÇäâÇÙÏÉ ÇäÈêÇæêñÉ áê åÙØå ÇäÃåËäÉ. ÃæÊ Ùäé Í⬠äãæ 
      ÊÙäå ÃÈÏÇ åÊé èãêá êåãæ ääÃåÑ Ãæ êÎÑÌ Ùæ ÇäâÇÙÏɬ èÅÐÇ ÍÏË Ðä㬠
      Åæ âÇÙÏÊã ÇäÈêÇæêñÉ êåãæ Ãæ Êãèæ åïÙÑñÖÉ. ÅÐÇ ãæÊ ÈÕÏÏ ÇÓÊÙåÇä åÕÏÑ åáÊèÍ Ãè 
      ÍÒåÉ ÊÊÙÇåä åÙ ÇäâèÇÙÏ ÇäÈêÇæêñÉ åÊèáÑÉ ääÙåèå ÑÈåÇ ÊæÊåê Åäé 
      ÅÍÏé ÃæØåÉ ÊÓêêÑ ÇäåÖåèæ Ãè ÇäåæÊÏêÇʬ áÅæç ÈÅåãÇæ ÇäåÊÓääêæ èÈÓçèäÉ ÇäâêÇå 
      ÈæÓÎ äÌÒÁ åæ ÔêáÑÊã. êåãæ Ãæ êãèæ äÐäã ÊÈÙÇÊ ÃåæêÉ ÅÐÇ ãÇæ 
      Ç俨Çå åïÕåñåÇ ÈÔãä ÓêÁ. 
     </simpara>
				<simpara>
      çÐç ÇäçÌèåÇÊ Êâèå ÃÓÇÓÇ Ùäé ÇÓÊÚäÇä ÇäÔêáÑÉ ÇäÊê äå ÊãÊÈ 
      åÙ ÃÎÐ åÓÃäÉ ÇäÃåæ ÈÙêæ ÇäÅÙÊÈÇÑ. äÇ ÊËâ ÃÈÏÇ ÈÃê æèÙ åæ ÇäåïÏÎäÇʬ ÎÇÕÉ Êäã 
      ÇäÊê ÊÃÊê åæ æÇÍêÉ ÇäÒÈèæ ÍÊé èÅæ ãÇæ åÕÏÑçÇ åÑÈÙ ÅæÊâÇÁ¬ 
      Íâä åïÏÎîä åÎáê Ãè åäá ÊÑÈê×. êØçÑ ÇäåËÇä ÇäÃèä Ãæ åËä çÐÇ 
      ÇäÅÓÊáçÇå ÚêÑ ÇäÖÇÑ êåãæ Ãæ êÊÓÈÈ áê ãèÇÑË. 
     </simpara>
				<itemizedlist>
					<listitem>
						<simpara>
        äÇ ÊÊÕä ÃÈÏÇ ÈÇäâÇÙÏÉ ÇäÈêÇæêñÉ ÈçèêÉ åÓÊÎÏå ÃÙØå Ãè åÇäã ÇäâÇÙÏÉ ÇäÈêÇæêñÉ. 
        ÅÓÊÙåä çèêÇÊ åïÔîÎÕæÉ äåÓÊÎÏåêæ Ðèê ÇåÊêÇÒÇÊ ÌÏ åÍÏèÏÉ. 
       </simpara>
					</listitem>
					<listitem>
						<simpara>
        ÊáâñÏ ÅÐÇ ãÇæ ÇäåïÏÎîä ÇäåïÙò×îé êÊèáÑ Ùäé æèÙ ÇäÈêÇæÇÊ ÇäåÊèâÙ. ÊÊèáÑ PHP 
        Ùäé ÊÔãêäÉ èÇÓÙÉ åæ ÏèÇä ÊÕÏêâ ÇäåïÏÎîäÇʬ ÅÈÊÏÇÁë åæ ÃÓçäçÇ 
        ÇäåèÌèÏÉ áê <link linkend="ref.variables">ÏèÇä ÇäåÊÚêÑÇÊ</link> 
        èáê <link linkend="ref.ctype">ÏèÇä ÃæèÇÙ ÇäÍÑèá</link>
        (åËä <function>is_numeric</function>¬ <function>ctype_digit</function>¬ 
        Ùäé ÇäÊèÇäê) Åäé ÚÇêÉ 
        ÏÙå <link linkend="ref.pcre">ÇäÙÈÇÑÇÊ ÇäÅÙÊêÇÏêñÉ ÇäåÊèÇáâÉ åÙ Perl</link>. 
       </simpara>
					</listitem>
					<listitem>
						<para>
        ÅÐÇ ãÇæ ÇäÊ×Èêâ ÈÕÏÏ ÇæÊØÇÑ ÇäåïïÏÎäÇÊ ÇäÙÏÏêñɬ áÙäêã ÇäÃÎÐ ÈÙêæ ÇäÅÙÊÈÇÑ åÓÃäÉ ÇäÊÍââ åæ ÇäÈêÇæÇÊ 
        ÈèÇÓ×É <function>is_numeric</function> Ãè ÇäÊÚêêÑ ÈÕåÊ äæèÙçÇ 
        ÈÇÓÊÎÏÇå <function>settype</function> Ãè ÇÓÊÙåÇä ÊåËêäçÇ ÇäÙÏÏêñ 
        åæ ÎäÇä  <function>sprintf</function>. 
        <example>
								<title>×ÑêâÉ ÃãËÑ ÃåæÇ äÊÔãêä ÇÓÊáçÇå ÊÕáêÍêñ</title>
								<programlisting role="php"><![CDATA[
settype($offset, 'integer');
$query = "SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET $offset;";

// ÑÌÇÁë¬ ÅæÊÈç Åäé %d áê ÇäÓäÓäÉ ÇäæñÕêñÉ áê ÇäÊæÓê⬠ÈÇÓÊÎÏÇå %s Óêãèæ ÈäÇ åÙæé 
$query = sprintf("SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET %d;",
                 $offset);
]]></programlisting>
							</example>
						</para>
					</listitem>
					<listitem>
						<simpara>
        ÖÙ Èêæ ÙäÇåÊê ÊæÕêÕ ãä åïÏÎäÇÊ ÇäåÓÊÎÏå ÚêÑ ÇäÙÏÏêñÉ ÇäÊê êÊå ÊåÑêÑçÇ Åäé ÇäâÇÙÏÉ ÇäÈêÇæêñÉ ÈèÇÓ×É 
        <function>addslashes</function> Ãè <function>addcslashes</function>. 
        Å×äÙ Ùäé <link linkend="security.database.storage">ÇäåËÇä ÇäÃèä</link>. 
        åËäåÇ ÊØçÑç ÇäÃåËäɬ áÅæ ÙäÇåÇÊ ÇäÊæÕêÕ ÇäåÊÖåæÉ Öåæ ÇäÌÒÁ ÇäÑÇãÏ åæ ÇäÅÓÊáçÇå 
        ÚêÑ ãÇáêÉ èêåãæ âÑÕæÊçÇ ÈÓçèäÉ. 
       </simpara>
					</listitem>
					<listitem>
						<simpara>
        ÙÏå ×ÈÇÙÉ ÃêÉ åÙäèåÇÊ ÎÇÕÉ ÈÇäâÇÙÏÉ ÇäÈêÇæêñÉ èÎÇÕÉ 
        Êäã ÇäåÊÙäâÉ ÈÇäÊÎ×ê׬ ÓèÇÁ ÈÇä×Ñâ ÇäÌêÏÉ Ãè ÇäÔÇÆæÉ. Å×äÙ ÃêÖÇ Ùäé <link linkend="security.errors">ÇäÅÙäÇå Ùæ ÇäÃÎ×ÇÁ</link> è <link linkend="ref.errorfunc">ÏèÇä ÇäÊÙÇåä åÙ ÇäÃÎ×ÇÁ èÊÓÌêä ÇäÏÎèä</link>. 
       </simpara>
					</listitem>
					<listitem>
						<simpara>
        êåãæã ÇÓÊÙåÇä ÅÌÑÇÆêÇÊ åïÎÒñîæÉ èÑÄèÓ ÇäåÄÔÑÇÊ ÇäåÓÈèâÉ ÇäÔÑÍ åæ ÃÌä ÇÎÊÕÇÑ 
        èäèÌ ÇäÈêÇæÇÊ ÍÊé äÇ êÊåãæ ÇäåÓÊÎÏåèæ åæ ÇäèäèÌ åÈÇÔÑÉ Åäé ÇäÌÏÇèä èÇäåÔÇçÏ äãæ 
        äçÐÇ ÇäÍä ÊÃËêÑÇÊ ÃÎÑé. 
       </simpara>
					</listitem>
				</itemizedlist>
				<simpara>
      ÙäÇèÉ Ùäé çÐǬ áÅæã ÊÓÊáêÏ åæ ÇÓÊáçÇåÇÊ ÊÓÌêä ÇäÏÎèä ÓèÇÁ Öåæ ÇäÓãÑêÈÊ ÇäÎÇÕ Èã 
      Ãè åæ ÎäÇä ÇäâÇÙÏÉ ÇäÈêÇæêñÉ æáÓçǬ ÅÐÇ ãÇæÊ ÊÏÙåçÇ. ÈÇäÊÃãêϬ êÊå ÊÙ×êä ÊÓÌä ÇäÏÎèä 
      ÈÚÑÖ ÇäèâÇêÉ åæ ÃêÉ åÍÇèäÉ ÖÇÑÉ äãæ êåãæ Êãèæ åæ ÇäÅáÇÏÉ ÈåãÇæ ÇäÊÙÑá èÐäã åæ ÎäÇä ÇäÊÙâÈ ÇäÑÌÙêñ Ùäé Ãê 
      Ê×Èêâ Êå ÅÍÈÇ×ç. ÇäÏêèÇæ äêÓ åáêÏÇ áê ÍÏ ÐÇÊç èäãæ ÇäÍÇä ãÐäã 
      åæ ÎäÇä ÇäåÙäèåÇÊ ÇäÊê ÊÊÖåæçÇ. åÒêÏ åæ ÇäÊáÇÕêä çè áê ÇäÙÇÏÉ ÃáÖä. 
     </simpara>
			</sect3>
		</sect2>
	</sect1>
	<sect1 id="security.errors">
		<title>ÇäÅÙäÇå Ùæ ÇäÃÎ×ÇÁ</title>
		<para>
    åæ ÎäÇä Ãåæ PHP¬ êÊÌäé èÌçÇæ ääÅÙäÇå Ùæ ÇäÃÎ×ÇÁ: ÃÍÏçåÇ 
    æÇáÙ êïÙîÒñðÒï ÇäÃåæ èÇäÂÎÑ åÓêÁ äç. 
   </para>
		<para>
    Êæ×èê Î×É çÌèå åâêÇÓêñÉ Ùäé åÑÇâÈÉ æØÇå ÈÊÚÐêÊç 
    ÈÈêÇæÇÊ ÚêÑ åäÇÆåÉ èåæ Ëå ÊáâñÏ ÃæèÇÙ èÓêÇâÇÊ 
    ÇäÃÎ×ÇÁ ÇäåïÙÇÏÉ. êÓåÍ çÐÇ äâÑÕÇæ Ç俨Çå ÈÓÈÑ 
    ÇäåÙäèåÇÊ ÇäåÊÙäâÉ ÈÇäÎÇÏå¬ ÈÚÑÖ ÊÍÏêÏ åèÇ׿ ÇäÖÙá ÇäååãæÉ. 
    Ùäé ÓÈêä ÇäåËÇä¬ ÅÐÇ ÇÓÊÌåÙ åçÇÌå åÇ åÙäèåÇÊ ÈÎÕèÕ ÕáÍÉ 
    âÇÆåÉ Ùäé ÊåÑêÑ Ãèäê äæåèÐ̬ áÅæç êÓÊ×êÙ åÍÇèäÉ ÓÍâ 
    ÇäåÊÚêÑÇÊ Ãè ÊÚêêÑçÇ: 
    <example>
				<title>åçÇÌåÉ åÊÚêÑÇÊ ÈèÇÓ×É ÕáÍÉ ÊÔÙÈêÉ åïÎÕñÕîÉ</title>
				<programlisting role="php"><![CDATA[
<form method="POST" action="attacktarget?username=badfoo&password=badfoo">
<input type="hidden" name="username" value="badfoo">
<input type="hidden" name="password" value="badfoo">
</form>
]]></programlisting>
			</example>
		</para>
		<para>
    ÃÎ×ÇÁ PHP ÇäÊê ÊÊå ÅÙÇÏÊçÇ ÈÔãä ×ÈêÙê êåãæ Ãæ Êãèæ ÊÇåÉ ÇäÅáÇÏÉ 
    ÈÇäæÓÈÉ äå×èñðÑ êÍÇèä ÅÒÇäÉ Ùðää ÓãÑêÈʬ åÔêÑÇ Åäé åËä çÐç ÇäÃÔêÇÁ 
    ÇäÊê áÔäÊ ãÇäÏÇäÉ Ãè Çäåäᬠåäá PHP ÇäÐê áÔä 
    èÑâå ÇäÓ×Ñ ÇäÐê ×Ñà áêç ÇäáÔä. çÐç çê ãä 
    ÇäåÙäèåÇÊ ÇäÊê êåãæ ÇÓÊÚäÇäçÇ. äêÓ åæ ÇäÅÓÊËæÇÁ Ãæ êÓÊÙåä å×èÑ php 
    <function>show_source</function>¬ 
    <function>highlight_string</function> Ãè 
    <function>highlight_file</function> ãÅÌÑÇÁ äÅÒÇäÉ ÇäÙää¬ äãæ Öåæ 
    åèâÙ Íê¬ êåãæ Ãæ êÄÏê çÐÇ Åäé ÙÑÖ ÇäåÊÚêÑÇÊ ÇäåÎáêñɬ ÇäÕêÚ ÇäÚêÑ åïÊáîâîÏÉ 
    èåÙäèåÇÊ Î×êÑÉ ÃÎÑé. ÊÊåËä ÇäÎ×èÑÉ ÎÇÕÉ áê ÊÔÚêä 
    ÔêáÑÉ äçÇ åÕÇÏÑ åÙÑèáÉ åïÑòáîâîÉ ÈåâÇÈÖ ÅÒÇäÉ Ùää åïÊîÖîåîæîÉ ÙæÏ ÇäÊñîÔêêÏ Ãè åæ ÎäÇä ÇÓÊÙåÇä 
    ÊâæêÇÊ ÅÒÇäÉ ÇäÙää ÇäåÃäèáÉ. ÅÐÇ ãÇæ ÇäåçÇÌå âÇÏÑÇ Ùäé ÊÍÏêÏ ÃêÉ 
    ÊâæêÉ ÙÇåÉ ÊÓÊÙåäçǬ áÅæç êåãæç åÍÇèäÉ ÅäÒÇå ÕáÍÉ åÇ âÓÑÇ 
    åæ ÎäÇä ÅÑÓÇä åÎÊäá ÇäÓäÇÓä ÇäæñÕêñÉ ÇäÎÇÕÉ ÈÅÒÇäÉ ÇäÙðää ÇäåÃäèáÉ: 
    <example>
				<title>ÅÓÊÚäÇä åÊÚêÑÇÊ ÅÒÇäÉ ÇäÙðää ÇäåÃäèáÉ</title>
				<programlisting role="php"><![CDATA[
<form method="POST" action="attacktarget?errors=Y&amp;showerrors=1"&debug=1">
<input type="hidden" name="errors" value="Y">
<input type="hidden" name="showerrors" value="1">
<input type="hidden" name="debug" value="1">
</form>
]]></programlisting>
			</example>
		</para>
		<para>
    ÈÚÖ ÇäæØÑ Ùæ ×ÑêâÉ ÇäÊÙÇåä åÙ ÇäÃÎ×ÇÁ¬ áÅæ âÇÈäêÉ ÓÈÑ 
    æØÇå ÈÍËÇ Ùæ ÇäÃÎ×ÇÁ êÄÏê Åäé ÊÒèêÏ åçÇÌå ÈåÒêÏ åæ 
    ÇäåÙäèåÇÊ. 
   </para>
		<para>
    Ùäé ÓÈêä ÇäåËÇä¬ ÃãËÑ åØçÑ ÎÇÕ ÈÎ×à ÙÇå Èà PHP êÔêÑ Åäé Ãæ æØÇå åÇ 
    çè ÈÕÏÏ ÊÔÚêä PHP. ÅÐÇ ãÇæ ÇäåçÇÌå êÈÍË Ùæ ÕáÍÉ ÐÇÊ ÇåÊÏÇÏ .html 
    èÃÑÇÏ ÓÈÑ ÇäæçÇêÉ ÇäÎäáêñÉ (back-end) (ÈÍËÇ Ùæ æâÇ× ÖÙá åÙÑèáÉ áê 
    Ç俨Çå) ÈÊÚÐêÊç ÈÇäÈêÇæÇÊ ÇäÎÇ×ÆÉ ÇäÊê êåãæç ÊèáêÑçÇ ÈÚÑÖ 
    ÊÍÏêÏ Åæ ãÇæ æØÇå åÇ âÏ Êå ÊÔêêÏç Èà PHP. 
   </para>
		<para>
    êåãæ äÎ×à ÏÇäÉ Ãæ êÔêÑ ÅÐÇ ãÇæ Ç俨Çå ÈÕÏÏ ÊÔÚêä 
    åÍÑã âèÇÙÏ ÈêÇæêñÉ ÎÇÕ Ãè êÙ×ê åáÇÊêÍ Íä äåÓÇÆä åËä ãêá ÊåÊ ÈÑåÌÉ Ãè ÊÕåêå ÕáÍÉ ÔïÙêñÉ åÇ. 
    êÓåÍ çÐÇ ÈÊâÕê ÃÙåâ Öåæ 
    åæÇáÐ ÇäâÇÙÏÉ ÇäÈêÇæêñÉ ÇäåáÊèÍÉ Ãè ÈÇäÈÍË Ùæ Ùðää ÎÇÕÉ Ãè æâÇ× ÖÙá 
    áê ÕáÍÉ ÔïÙêñÉ. áÙäé ÓÈêä ÇäåËÇä¬ åæ ÎäÇä ÇäÊÚÐêÉ ÈÃÌÒÇÁ åÎÊäáÉ åæ ÇäÈêÇæÇÊ ÇäÒÇÆáɬ 
    êåãæ äåçÇÌå Ãæ êïÍÏñðÏ ÊÑÊêÈ ÇäÊÍââ åæ ÇäçèêÉ áê ÓãÑêÈÊ 
    (Åæ×äÇâÇ åæ ÃÎ×ÇÁ Ñâå ÇäÓ×Ñ) èãÐÇ ÓÈÑ ÇäÅÓÊËåÇÑÇÊ ÇäÊê 
    êåãæ ÅÓÊÚäÇäçÇ áê åèÇâÙ åÎÊäáÉ áê ÇäÓãÑêÈÊ. 
   </para>
		<para>
    Åæ Î×Ãë åÊÙäâÇ ÈÇ俨Çå ÇäåäáÇÊê Ãè Î×à ÙÇåÇ ÈàPHP êåãæ Ãæ êÔêÑ Åäé Ãê ÇäÊÑÇÎêÕ 
    êÊèáÑ ÙäêçÇ ÇäÎÇÏå ÇäÔñÙêñ èãÐÇ ÈæêÉ èÊæØêå 
    ÇäåäáÇÊ Ùäé ÇäÎÇÏå ÇäÔñÙêñ. êåãæ äÔêáÑÉ Î×à åãÊèÈ åæ âÈä å×èñðÑ Ãæ ÊïÙîâñðÏ 
    ÇäåÔãäɬ åÄÏêÉ ÈÐäã Åäé ÇÓÊÚäÇä ÃÓçä ääåÙäèåÇÊ "ÇäÎáêñÉ" 
    ÇäåÐãèÑÉ ÓÇÈâÇ. 
   </para>
		<para>
    çæÇã ËäÇËÉ Íäèä ãÈÑé äçÐç ÇäåÓÃäÉ. ÊÊåËä ÇäÃèäé áê 
    ÊâÕê ãäñ ÇäÏñèÇä èåÍÇèäÉ ÇäÊÙèêÖ Ùæ åÙØå 
    ÇäÃÎ×ÇÁ. ÊÊåËä ÇäËÇæêÉ áê ÇäÊÙ×êä ÇäãÇåä ääÅÙäÇå Ùæ ÇäÃÎ×ÇÁ 
    Ùäé ÇäÔêáÑÉ ÇäÊê ÈÕÏÏ ÇäÅÔÊÚÇä. èÊÊåËä ÇäËÇäËÉ áê ÇÓÊÙåÇä ÏèÇä ÇäÊÙÇåä åÙ ÇäÃÎ×ÇÁ ÇäåÎÕÕÉ ÇäÎÇÕÉ È PHP 
    åæ ÃÌä ÅæÔÇÁ åâÈÖ ÇäÎ×à ÇäÎÇÕ Èã. ÈÍÓÈ 
    ÓêÇÓÊã ÇäÃåæêñɬ êåãæ Ãæ ÊÌÏ Ãæñ ãä ÇäÍäèä ÇäËäÇËÉ âÇÈäÉ ääÊ×Èêâ 
    ÈÇäæÓÈÉ äèÖÙêÊã. 
   </para>
		<para>
    çæÇã ×ÑêâÉ ääÅÍÇ×É ÈÇäåÓÃäÉ åïÓÈâÇ èÊÊåËä áê ÇÓÊÙåÇä 
    <function>error_reporting</function> ÇäÎÇÕÉ Èà PHP èÐäã ÈÚÑÖ äåÓÇÙÏÊã 
    äÊÃåêæ ÔêáÑÊã èÇäÈÍË Ùæ ÇÓÊÎÏÇå ÇäåÊÚêÑÇÊ ÇäÐê êåãæ Ãæ êãèæ Î×êÑÇ. 
    åæ ÎäÇä ÇÎÊÈÇÑ ÔêáÑÊ㬠âÈä ÇäæÔѬ èÐäã ÙÈÑ E_ALL¬ êåãæã 
    ÇäÅêÌÇÏ ÇäÓÑêÙ ääÈâÙ ÍêË êåãæ äåÊÚêÑÇÊã Ãæ ÊïáÊÍ ÈÚÑÖ ÇäÅêÐÇÁ 
    Ãè ÇäÊÙÏêä È×Ñâ ÃÎÑé. ÈåÌÑÏ åÇ ÊÕÈÍ ÌÇçÒÇ ääæÔѬ  
    èåæ ÎäÇä ÇÓÊÙåÇä E_NONE¬ áÅæã Êâê ÔêáÑÊã åæ ÇäÓÈÑ. 
    <example>
				<title>ÅêÌÇÏ åÊÚêÑÇÊ Î×êÑÉ ÈèÇÓ×É E_ALL</title>
				<programlisting role="php"><![CDATA[
<?php
if ($username) {  // äå êÊå ÅÓÊçäÇäçÇ Ãè ÊáâÏçÇ âÈä ÇäÅÓÊÙåÇä
    $good_login = 1;
}
if ($good_login == 1) { // ÅÐÇ áÔä ÇäÅÎÊÈÇÑ ÇäÙäèêñ¬ äå êÊå ÇÓÊçäÇäç Ãè ÊáâÏç âÈä ÇäÅÓÊÙåÇä
    readfile ("/bayanat/jidu/hassassa/index.html");
}
?>
]]></programlisting>
			</example>
		</para>
	</sect1>
	<sect1 id="security.registerglobals">
		<title>ÅÓÊÙåÇä ÔÇåäÇÊ ÇäÊÓÌêä (Register Globals)</title>
		<para>
    äÑÈåǬ ÇäÊÚêêÑ ÇäÃãËÑ ÅËÇÑÉ ääÌÏä áê PHP çè ÙæÏåÇ ÅæÊâäÊ ÇäâêåÉ ÇäÅáÊÑÇÖêñÉ 
    ÇäÎÇÕÉ ÈÊèÌêç PHP<link linkend="ini.register-globals">
    register_globals</link> åæ ON Åäé OFF áê PHP 
    <ulink url="&url.php.release4.2.0;">4.2.0</ulink>. ÇäËâÉ ÈçÐÇ 
    ÇäÊèÌêç ãÇæÊ ÔÈç åÔÊÑãÉ èÇäãËêÑ åæ ÇäæÇÓ äå êãèæèÇ êÙÑáèæ ÍÊé ÃæçÇ åèÌèÏÉ 
    èãÇæèÇ êáÊÑÖèæ Ãæ çÐç çê ãÐäã ×ÑêâÉ ÙåäÉ PHP. çÐç ÇäÕáÍÉ ÓÊÔÑÍ ãêá êåãæ äÔÎÕ åÇ 
    ãÊÇÈÉ ÔêáÑÉ ÚêÑ ÂåæÉ åÑáèâÉ ÈçÐÇ ÇäÊèÌêç äãæ ÊÐãÑ Ãæ 
    ÚæÙÏÇå ÇäÃåæ äêÓ áê ÇäÊèÌêç áê ÍÏ ÐÇÊç èÅæñåÇ áê ÓèÁ ÇÓÊÙåÇäç. 
   </para>
		<para>
    ÙæÏåÇ Êãèæ ÇäâêåÉ On¬ áÅæ register_globals ÓÊâèå ÈÍâæ (ÊÓåêå) ÓãÑêÈÊÇÊã ÈãÇáÉ 
    ÃæèÇÙ ÇäåÊÚêÑÇʬ åËä ×äÈ ÇäåÊÚêÑÇÊ åæ æåÇÐÌ html. âÑæ çÐÇ 
    ÈèÇâÙ Ãæ PHP äÇ êÔÊÑ× ÅÓÊçäÇä ÇäåÊÚêÑÇÊ 
    êÙæê Ãæ ãÊÇÈÉ ÔêáÑÉ ÚêÑ ÂåæÉ çê ÃåÑ ÃÓçä ÈãËêÑ. äâÏ ãÇæ âÑÇÑÇ 
    ÕÙÈǬ äãæ åÌåèÙÉ PHP âÑÑÊ ÊÙ×êä çÐÇ ÇäÊèÌêç ÈÔãä 
    ÅáÊÑÇÖê. ÙæÏåÇ Êãèæ ÇäâêåÉ On¬ áÅæ ÇäÃÔÎÇÕ êÓÊÙåäèæ åÊÚêÑÇÊ èçå äÇ êÙÑáèæ Íâ Çäêâêæ ÍÊé 
    åÕÏÑçÇ èÈåâÏèÑçå ÇäÒÙå áâ×. ÇäåÊÚêÑÇÊ ÇäÏÇÎäêñÉ 
    ÇäåïÙÑñîáÉ áê ÇäÓãÑêÈÊ æáÓç êÊå ÏåÌçÇ ÈÇäÈêÇæÇÊ Çä×äÈêÉ ÇäåïÑÓîäîÉ åæ âÈä 
    ÇäåÓÊÎÏåêæ èÊÙ×êä register_globals êÚêñÑ çÐÇ ÇäèÖÙ. äæÓÊÏä 
    ÈåËÇä Ùæ ÓèÇÁ ÇÓÊÙåÇä register_globals: 
   </para>
		<para>
			<example>
				<title>åËÇä Ùæ ÓèÁ ÇÓÊÙåÇä register_globals = on</title>
				<programlisting role="php"><![CDATA[
<?php
// ÊÙÑêá $authorized = true áâ× ÅÐÇ ãÇæ ÇäåÓÊÎÏå âÏ Êå ÊÓÌêä ÏÎèäç
if (authenticated_user()) {
    $authorized = true;
}

// ÈÓÈÈ ÃææÇ äå æâå áê ÇäÃèä ÈÇÓÊçäÇä $authorized Ùäé Ãæç false¬ áêåãæ 
// ÊÙÑêáç åæ ÎäÇä register_globals¬ åËäÇ Åæ×äÇâÇ åæ GET auth.php?authorized=1 
// äÐä㬠êåãæ åÔÇçÏÉ Ãê ÃÍÏ Ùäé Ãæ ÏÎèäç åïÓÌñîä! 
if ($authorized) {
    include "/jidan/hassassa/bayanat.php";
}
?>
]]></programlisting>
			</example>
		</para>
		<para>
    ÙæÏåÇ Êãèæ register_globals = on¬ áÅæ åæ×âæÇ ÇäÙäèêñ êåãæ Ãæ êãèæ åïÙÑñîÖÇ ääÎ×Ñ. èÙæÏåÇ Êãèæ ÇäâêåÉ 
    off¬ áÅæ <varname>$authorized</varname> äÇ êåãæ ÊÍÏêÏçÇ åæ ÎäÇä ×äÈêÉ èÈÐäã êãèæ ÇäÃåÑ 
    ÌêÏǬ ÑÚå Ãæ ÇÓÊçäÇä ÇäåÊÚêÑÇÊ ÃèäÇ çè áê ÇäÙåèå èáÙäÇ ååÇÑÓÉ ÈÑåÌêñÉ ÌêÏÉ. 
    Ùäé ÓÈêä ÇäåËÇä¬ áê åËÇäæÇ ÇäÙäèêñ¬ ãÇæ ÈÅåãÇææÇ 
    ÇäâêÇå ÃèäÇ ÈÌÙä âêåÉ <literal>$authorized = false</literal>. âêÇåæÇ ÈçÐÇ 
    ÃèäÇ êÙæê Ãæ ÔêáÑ澂 ÇäÙäèêñÉ ãÇæÊ ÓÊÙåä åÙ register_globals ÓèÇÁ ÃãÇæÊ On Ãè Off ÈÇÙÊÈÇÑ 
    Ãæ ÇäåÓÊÎÏåêæ Óêãèæèæ ÚêÑ åïÎîèîäðêæ ÈÔãä ÅáÊÑÇÖêñ. 
   </para>
		<para>
    åËÇä ÂÎÑ êÊåËä áê <link linkend="ref.session">ÇäÌäÓÇÊ</link>. 
    ÙæÏåÇ Êãèæ register_globals = on¬ êåãææÇ ÇêÖÇ ÇÓÊÙåÇä 
    <varname>$username</varname> áê åËÇäæÇ ÇäÓáäêñ äãæ åæ ÌÏêÏ êÌÈ Ùäêã 
    ÊÕèÑ Ãæ <varname>$username</varname> êåãæ Ãæ ÊÃÊê ÃêÖÇ åæ ÎäÇä èÓÇÆä ÃÎÑé¬ 
    åËä GET (ÙÈÑ åÍÏÏ ÇäåèÑÏ ÇäåÊÔÇãä). 
   </para>
		<para>
			<example>
				<title>åËÇä Ùæ ÇÓÊÙåÇä ÇäÌäÓÇÊ ÈÇäÊÒÇåæ åÙ register_globals ÓèÇÁ ÃãÇæÊ On Ãè Off</title>
				<programlisting role="php"><![CDATA[
<?php
// ä æÙÑá åÕÏÑ âÏèå $username èäãæ çä ÊÙÑá $_SESSION 
// äÈêÇæÇÊ ÇäÌäÓÉ 
if (isset($_SESSION['username'])) {
    
    echo "ÃçäÇ <b>{$_SESSION['username']}</b>";

} else {
    
    echo "ÃçäÇ <b>êÇ Öêá</b><br />";
    echo "çäÇ âåÊ ÈÊÓÌêä ÏÎèäã?";

}
?>
]]></programlisting>
			</example>
		</para>
		<para>
    ÅÐÇ åÇ ãÇæÊ çæÇã åÍÇèäÉ ääÊäáê⬠áÅæç åæ Çäååãæ ÍÊé ÅÊÎÇÐ ÅÌÑÇÁÇÊ èâÇÆêñÉ ääÊÍÐêÑ. 
    ÅÐÇ ãæÊ ÊÙäå åÙØå ÇäèâÊ èÊÍÏêÏÇ åÕÏÑ âÏèå åÊÚêÑ åǬ 
    áêåãæã ÇäÊåÙæ ÅÐÇ ãÇæÊ ÇäÈêÇæÇÊ ÇäåïåîÑñîÑñîÉ åÕÏÑçÇ 
    æèÙ ÚêÑ äÇÆâ åæ ÇäÊåÑêÑÇÊ. áê Íêæ Ãæç äÇ êåãæ 
    ÖåÇæ Ãæñ ÇäÈêÇæÇÊ âÏ Êå ÊäáêâçÇ ÅäÇ Ãæ ÇäÃåÑ âÏ êâÊÖê åæ ÇäåçÇÌå 
    ÇäÊáãêÑ áê Çä×ÑêâÉ ÇäÕÍêÍÉ ääÊäáêâ. ÅÐÇ äå Êãæ ÊçÊå äåÕÏÑ ÇäÈêÇæÇÊ Çä×äÈêñɬ 
    áêåãæã ÇÓÊÙåÇä <varname>$_REQUEST</varname> ÈÇÙÊÈÇÑ ÃæçÇ ÇÍÊèê 
    åÒêÌÇ åæ ÈêÇæÇÊ GET¬ POST è COOKIE. Å×äÙ¬ áê ÇäÏäêä¬ Ùäé ÇäáÕä ÇäåÊÙäâ 
    ÈÇÓÊÎÏÇå <link linkend="language.variables.external">ÇäåÊÚêÑÇÊ åæ ÎÇÑÌ 
    PHP</link>. 
   </para>
		<para>
			<example>
				<title>ÇäãÔá Ùæ ÊÓåêå ÈÓê× ääåÊÚêÑÇÊ</title>
				<programlisting role="php"><![CDATA[
<?php
if (isset($_COOKIE['MAGIC_COOKIE'])) {
    
    // MAGIC_COOKIE åÕÏÑçÇ åäá ÊÑÈê×. 
    // ÊÃãêÏ åæ ÇÓÊêËÇâ ÈêÇæÇÊ åäá ÇäÊÑÈê×!

} elseif (isset($_GET['MAGIC_COOKIE']) || isset($_POST['MAGIC_COOKIE'])) {
   
   mail("[email protected]", "åÍÇèäÉ ÅÙÇâÉ åÍÊåäÉ", $_SERVER['REMOTE_ADDR']);
   echo "ÅæÊçÇã ääÃ忬 äâÏ Êå ÊæÈêç ÇäåÏêÑ.";
   exit;

} else {
   
   // MAGIC_COOKIE äå êÊå ÊÍÏêÏçÇ ÙÈÑ REQUEST

}
?>
]]></programlisting>
			</example>
		</para>
		<para>
    ÈÇä×ÈÙ¬ äÇ êÙæê åÌÑÏ ÊÙ×êä register_globals Ãæ ÔêáÑÊã 
    ÂåæÉ. êÌÈ ÃêÖÇ ÇäÊÏâêâ áê ãä â×ÙÉ ÈêÇæÇÊ êÊå ÊåÑêÑçÇ èÐäã È×Ñâ ÃÎÑé. 
    âå ÏÇÆåÇ ÈÇÓÊêËÇâ ÈêÇæÇÊ ÇäåÓÊÎÏåêæ èÈÇÓÊçäÇä 
    åÊÚêÑÇÊã! åæ ÃÌä ÊáâÏ ÇäåÊÚêÑÇÊ ÇäÊê äå êÊå ÇÓÊçäÇäçÇ ÈÇäÙèÏÉ Åäé 
    <function>error_reporting</function> ÈÚÑÖ ÅØçÇÑ 
    ÃÎ×ÇÁ åÓÊèé <constant>E_NOTICE</constant>. 
   </para>
   
   &note.superglobals;

  </sect1>
	<sect1 id="security.variables">
		<title>ÇäÈêÇæÇÊ ÇäåïåîÑñîÑñîÉ åæ âÈä ÇäåÓÊÎÏåêæ</title>
		<para>
    Åæ ÃÙØå æâÇ× ÇäÖÙá áê ÇäÙÏêÏ åæ ÈÑÇåÌ PHP äÇ ÊäÇÒå ÇääÚÉ 
    áê ÍÏñð ÐÇÊçÇ» ÇäåÓÃäÉ çê äåÌÑÏ Ãæ ÇäÔêáÑÉ äå ÊãÊÈ åÑáèâÉ ÐçæêëÇ 
    ÈåÔÇÚä ÇäÃåæ. äçÐÇ ÇäÓÈȬ Ùäêã ÏèåÇ ÃÎÐ ÇäèâÊ ÇääÇÒå 
    ääÃÎÐ ÈÙêæ ÇäÅÙÊÈÇÑ ÇäÊÑñÊÈÇÊ ÇäåïÊîèñîäñðÏîÉ Ùæ ÌÒÁ åïÙò×îé åæ ÇäÔêáÑÉ ääÊîËñîÈñïÊ åæ 
    ÇäÖñîÑÑ ÇäåÍÊåä ÅÐÇ åÇ Êå ÊåÑêÑ åÊÚêÑ ÚêÑ åÊèâÙ ÅäêçÇ. 
    <example>
				<title>ÇäÅÓÊÙåÇä ÇäÎ×Ñ ääåÊÚêÑÇÊ</title>
				<programlisting role="php"><![CDATA[
<?php
// æÒÙ åäá åæ ÇäåÌäÏ Çäåè׿ ääåÓÊÎÏêæ... Ãè ÑÈåÇ 
// ÇäÎÇÕ ÈÔÎÕ ÂÎÑ¿ 
unlink ($evil_var);

// ãÊÇÈÉ ÊÓÌêä ÇäÏÎèä ÇäÎÇÕ ÈèäèÌçå... Ãè ÑÈåÇ åïÏòÎîä /etc/passwd ¿
fputs ($fp, $evil_var);

// ÊæáêÐ ÔêÁ ÊÇáç .. Ãè rm -rf *¿
system ($evil_var);
exec ($evil_var);

?>
]]></programlisting>
			</example>
    Ùäêã Ãæ Êâèå ÈÇäÊáÍÕ ÇäÏÇÆå äÔêáÑÊã ääÊÃãÏ åæ Ãæñ ÃêÉ 
    åÊÚêÑÇÊ êÊå ÊåÑêÑçÇ Åæ×äÇâÇ åæ åÓÊÙÑÖ ÔïÙêñ êÊå ÃêÖÇ 
    ÊáâÏçÇ ÈÔãä åäÇÆå èÃ×ÑÍ Ùäé æáÓã ÇäÃÓÆäÉ ÇäÊÇäêñÉ: 
    <itemizedlist>
				<listitem>
					<simpara>
       çä ÓêÄËÑ çÐÇ ÇäÓãÑêÈÊ áâ× áê ÇäåäáÇÊ ÇäåâÕèÏÉ¿ 
      </simpara>
				</listitem>
				<listitem>
					<simpara>
       çä êåãæ ÇäÙåä Ùäé ÇäÈêÇæÇÊ ÚêÑ ÇäåÙÊÇÏÉ Ãè ÚêÑ ÇäåÑÚèÈ ÈçÇ¿ 
      </simpara>
				</listitem>
				<listitem>
					<simpara>
       çä êåãæ ÇÓÊÙåÇä çÐÇ ÇäÓãÑêÈÊ È×Ñâ ÚêÑ åâÕèÏÉ¿ 
      </simpara>
				</listitem>
				<listitem>
					<simpara>
       çä êåãæ ÇÓÊÙåÇä çÐÇ ÈÇäÊÒÇåæ åÙ ÓãÑêÈÊÇÊ ÃÎÑé È×ÑêâÉ 
       ÓäÈêñÉ¿ 
      </simpara>
				</listitem>
				<listitem>
					<simpara>
       çä ÓêÊå ÊÏèêæ ÃêÉ åÙÇåäÇÊ È×ÑêâÉ åæÇÓÈÉ¿ 
      </simpara>
				</listitem>
			</itemizedlist>
    åæ ÎäÇä Çä×ÑÍ ÇäåæÇÓÈ äçÐç ÇäÃÓÆäÉ ÈÇäÊÒÇåæ åÙ ãÊÇÈÉ ÇäÓãÑêÈʬ 
    ÈÏäÇ åæ ×ÑÍçÇ áêåÇ ÈÙϬ ÓÊÊáÇÏé ÅÙÇÏÉ ãÊÇÈÉ ÊÙêÓÉ ÙæÏåÇ 
    ÊÍÊÇÌ äÊè×êÏ Ãåæã. ÈÇäÅÈÊÏÇÁ ÈçÐç ÇäÊñèÕêÇÊ ÇäÊáãêÑêñɬ 
    äæ ÊÖåæ Ãåæ æØÇåã äãæ êåãæã ÇäåÓÇÙÏÉ 
    Ùäé ÊÍÓêæç. 
   </para>
		<para>
    ÃêÖǬ êåãæ Ãæ ÊÑÚÈ áê ÇäÃÎÐ ÈÙêæ ÇäÅÙÊÈÇÑ åÓÃäÉ ÊÙ×êä register_globals¬ 
    magic_quotes Ãè ÅÙÏÇÏÇÊ ÇäåïäÇÁîåÉ ÇäÊê êåãæ ÊÎä× Ùäêã ÇäÃåèÑ 
    ÈÎÕèÕ ÕäÇÍêɬ åÕÏÑ Ãè âêåÉ åÊÚêÑ åïÙò×îé. 
    Åæ ÇäÙåä Èà PHP áê èÖÙ error_reporting(E_ALL) êåãæ Ãæ êÓÇÙÏ Ùäé ÊæÈêçã 
    ÈÎÕèÕ ÇäåÊÚêÑÇÊ ÇäÌÇÑê ÇÓÊÙåÇäçÇ âÈä ÊáâÏçÇ Ãè 
    ÇÓÊçäÇäçÇ (èÈÐäã êåãæã ÊáÇÏê Ãæ êÊå ÇäÙåä Ùäé 
    ÇäÈêÇæÇÊ ÚêÑ ÇäåÙÊÇÏÉ). 
   </para>
	</sect1>
	<sect1 id="security.hiding">
		<title>åèÇÑÇÉ PHP</title>
		<para>
    Ùäé ÇäÙåèå¬ áÅæ ÇäÃåæ ÇäåÊÓÊÑ çè ÃÍÏ ÃÖÙá ÃÔãÇä ÇäÃåæ. 
    äãæ áê ÈÙÖ ÇäÃÍêÇæ¬ ãä ÅÖÇáÉ ÃåæêñÉ çê åÑÚèÈÉ. 
   </para>
		<para>
    êåãæ äÈÖÙÉ ÊâæêÇÊ ÈÓê×É Ãæ ÊÓÇÙÏã Ùäé åèÇÑÇÉ PHP èÑÈåÇ Ùäé ÅÈ×ÇÁ 
    åçÇÌå êÍÇèä ÅãÊÔÇá æâÇ× ÇäÖÙá áê 
    æØÇåã. åæ ÎäÇä ÊÍÏêÏ âêåÉ expose_php = off áê åäá &php.ini; ÇäÎÇÕ È㬠
    êåãæã ÅæâÇÕ åâÏÇÑ ÇäåÙäèåÇÊ ÇäåÊèáÑÉ äÏêçÇ. 
   </para>
		<para>
    çæÇã Î×É ÃÎÑé ÊÊåËä áê ÊçêÆÉ ÇäÎèÇÏå ÇäÔñïÙêñÉ åËä Apache äÊáÓêÑ 
    åÎÊäá ÃæèÇÙ ÇäåäáÇÊ åæ ÎäÇä PHP¬ ÅåÇ ÈÊèÌêç &htaccess; 
    Ãè ÙÈÑ åäá ÊçêÆÉ Apache æáÓç. ÍêæçǬ êåãæã 
    ÇÓÊÙåÇä ÅåÊÏÇÏÇÊ ÇäåäáÇÊ ÇäÊñÖäêäêñÉ: 
    <example>
				<title>åèÇÑÇÉ PHP Ùäé ÃæçÇ äÚÉ ÃÎÑé</title>
				<programlisting role="apache-conf"><![CDATA[
# ÅÌÙä ÔêáÑÉ PHP ÊØçÑ åËä ÃæèÇÙ ÇäÔêáÑÉ ÇäÃÎÑé 
AddType application/x-httpd-php .asp .py .pl
]]></programlisting>
			</example>
    Ãè ÇÓÊÑçÇ ÊåÇ: 
    <example>
				<title>ÅÓÊÙåÇä ÃæèÇÙ ÚêÑ åÙÑèáÉ åæ ÅåÊÏÇÏÇÊ PHP</title>
				<programlisting role="apache-conf"><![CDATA[
# ÅÌÙä ÔêáÑÉ PHP ÊØçÑ åËä ÇäÃæèÇÙ ÚêÑ ÇäåÙÑèáÉ 
AddType application/x-httpd-php .bop .foo .133t
]]></programlisting>
			</example>
    Ãè åèÇÑÇÊçÇ Ùäé ÃæçÇ ÔêáÑÉ html ååÇ êÊÑÊÈ Ùæç ÊÃËêÑ ×áêá Ùäé ÇäáÙÇäêÉ äÃæñ 
    ãÇáÉ åäáÇÊ html ÓêÊå ÊáÓêÑçÇ åæ ÎäÇä åÍÑã PHP: 
    <example>
				<title>ÅÓÊÙåÇä ÃæèÇÙ html ãÇåÊÏÇÏÇÊ äà PHP</title>
				<programlisting role="apache-conf"><![CDATA[
# ÅÌÙä ãä ÔêáÑÉ PHP ÊØçÑ èãÃæçÇ html 
AddType application/x-httpd-php .htm .html
]]></programlisting>
			</example>
    ÍÊé êÙåä çÐÇ áÙäêǬ êÌÈ Ùäêã ÅÙÇÏÉ ÊÓåêÉ åäáÇÊ PHP ÇäÎÇÕÉ Èã äÍåä 
    ÇäÅåÊÏÇÏÇÊ ÇäÙäèêñÉ. åÙ Ãæ çÐÇ çè Ôãä ääÃåæ ÇäåÊÓÊѬ 
    ÅäÇ Ãæç ÅÌÑÇÁ èâÇÆê ×áêá êæ×èê Ùäé Çäâäêä åæ ÇäåÓÇèÆ. 
   </para>
	</sect1>
	<sect1 id="security.current">
		<title>ÇäÊÍÏêË ÇäåÓÊåÑ</title>
		<simpara>
    åËä Ãê æØÇå ãÈêÑ ÂÎѬ áÅæñ PHP çè âêÏ ÇäÊáÍÕ ÇäÏÇÆå èÇäÊÍÓêæ. 
    ãä ÅÕÏÇÑÉ ÌÏêÏÉ ÊÊÖåæ ÚÇäÈÇ ãäÇ åæ ÇäÊÚêêÑÇÊ ÇäãÈÑé èÇäÕÚÑé 
    ÈÚÑÖ ÊÙÒêÒ èÅÕäÇÍ ÇäæâÇÆÕ ÇäÃåæêñɬ ÊÔèñïçÇÊ ÇäÊñçêÆÉ 
    èåÓÇÆä ÃÎÑé ÊÄËÑ áê Ãåæ 
    èÇÓÊâÑÇÑ æØÇåã ÈÇäãÇåä. 
   </simpara>
		<simpara>
    åËä äÚÇÊ èÈÑÇåÌ ÇäÈÑåÌÉ ÇäÔñÙêÉ åæ åÓÊèé Ç俨Çå ÇäÃÎÑé¬ áÅæ ÃáÖä 
    åâÇÑÈÉ çê ÇäÊÍÏêË ÚÇäÈÇ èÅÈâÇÁ ÇäÅæÊÈÇç ÈÎÕèÕ ÂÎÑ 
    ÇäÅÕÏÇÑÇÊ èÇäÊÚêêÑÇÊ Çä×ÇÑÆÉ ÈçÇ. 
   </simpara>
	</sect1>
</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:"../../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
-->