tpug Mon Dec 10 13:39:22 2001 EDT Added files: /phpdoc/tr/features safe-mode.xml Log: added by Alper up-to-date
Index: phpdoc/tr/features/safe-mode.xml +++ phpdoc/tr/features/safe-mode.xml <?xml version="1.0" encoding="iso-8859-9"?> <!-- $Revision: 1.1 $ --> <chapter id="features.safe-mode"> <title>Güvenli Kip</title> <para> Güvenli kip paylaşımlı-sunucu kavramının getirdiği güvenlik sorunlarını çözmeye yönelik bir adımdır. Bu sorunu PHP seviyesinde çözmeye çalışmak, mimari açıdan doğru değildir, fakat HTTP sunucusu ve işletim sistemi seviyesindeki alternatifler çok gerçekçi olmadığından, çok sayıda kişi, özellike ISS'ler, şimdilik güvenli kipi kullanırlar. </para> <para> Güvenli kipi kontrol eden direktifler şunlardır: <programlisting role="ini"> <![CDATA[ safe_mode = Off open_basedir = safe_mode_exec_dir = safe_mode_allowed_env_vars = PHP_ safe_mode_protected_env_vars = LD_LIBRARY_PATH disable_functions = ]]> </programlisting> </para> <para> <link linkend="ini.safe-mode">safe_mode</link>'un aktif olduğu zamanlarda, PHP, dosya fonksiyonlarıyla bir dosya üzerinde işlem yapmadan önce o dosyayla çalışmakta olan betiğin sahiplerini karşılaştırır. Örneğin: <programlisting role="ls"> <![CDATA[ -rw-rw-r-- 1 rasmus rasmus 33 Jul 1 19:20 script.php -rw-r--r-- 1 root root 1116 May 26 18:01 /etc/passwd ]]> </programlisting> Bu betiği çalıştırmak: <programlisting role="php"> <![CDATA[ <?php readfile('/etc/passwd'); ?> ]]> </programlisting> Güvenli kipin açık olduğu zamanlarda şunun gibi bir hata ile sonuçlanır: <screen> <![CDATA[ Warning: SAFE MODE Restriction in effect. The script whose uid is 500 is not allowed to access /etc/passwd owned by uid 0 in /docroot/script.php on line 2 ]]> </screen> </para> <para> Eğer <link linkend="ini.safe-mode">safe_mode</link> yerine, open_basedir ile bir dizin belirtirseniz, bütün dosya işlemleri belirtilen bu dizin altında gerçekleşecektir. Örneğin (Apache httpd.conf örneği): <programlisting role="ini"> <![CDATA[ <Directory /docroot> php_admin_value open_basedir /docroot </Directory> ]]> </programlisting> Aynı script.php betiğini bu open_basedir ayarıyla çalıştırırsanız alacağınız sonuç: <screen> <![CDATA[ Warning: open_basedir restriction in effect. File is in wrong directory in /docroot/script.php on line 2 ]]> </screen> </para> <para> Ayrıca istediğiniz fonksiyonların kullanımdan kaldırabilirsiniz. Bunu php.ini dosyamıza eklersek: <programlisting role="ini"> <![CDATA[ disable_functions readfile,system ]]> </programlisting> Şu çıktıyı alırız: <screen> <![CDATA[ Warning: readfile() has been disabled for security reasons in /docroot/script.php on line 2 ]]> </screen> </para> <sect1 id="features.safe-mode.functions"> <title>Güvenli Kip tarafından kısıtlanan/iptal edilen fonksiyonlar</title> <para> <link linkend="features.safe-mode">Safe Mode</link> tarafından kısıtlanan fonksiyonların listesi büyük ihtimalle halen tam değil ve yanlış olması gayet mümkün: <!-- TODO: add ¬e.sm.*; to the functions mentioned here. That entity should link to this section --> <table> <title>Güvenli Kip tarafından kısıtlanan fonksiyonlar</title> <tgroup cols="2"> <thead> <row> <entry>Fonksiyon</entry> <entry>Kısıtlama</entry> </row> </thead> <tbody> <row> <entry><function>dbmopen</function></entry> <entry>&sm.uidcheck;</entry> </row> <row> <entry><function>dbase_open</function></entry> <entry>&sm.uidcheck;</entry> </row> <row> <entry><function>filepro</function></entry> <entry>&sm.uidcheck;</entry> </row> <row> <entry><function>filepro_rowcount</function></entry> <entry>&sm.uidcheck;</entry> </row> <row> <entry><function>filepro_retrieve</function></entry> <entry>&sm.uidcheck;</entry> </row> <row> <entry><function>ifx_*</function></entry> <entry>sql_safe_mode kısıtlamaları, (!= Güvenli Kip)</entry> <!-- TODO: more info on sql-safe-mode --> </row> <row> <entry><function>ingres_*</function></entry> <entry>sql_safe_mode kısıtlamaları, (!= Güvenli Kip)</entry> <!-- TODO: more info on sql-safe-mode --> </row> <row> <entry><function>mysql_*</function></entry> <entry>sql_safe_mode kısıtlamaları, (!= Güvenli Kip)</entry> <!-- TODO: more info on sql-safe-mode --> </row> <row> <entry><function>pg_loimport</function></entry> <entry>&sm.uidcheck;</entry> <!-- source TODO: there is no PHP-warning for that safe-mode-restriction --> </row> <row> <entry><function>posix_mkfifo</function></entry> <entry>&sm.uidcheck.dir;</entry> </row> <row> <entry><function>putenv</function></entry> <entry>safe_mode_protected_env_vars ve safe_mode_allowed_env_vars ini-direktiflerine uyar. Ayrıca <function>putenv</function> hakkındaki dökümanlara bakınız.</entry> <!-- TODO: document those directives in chapters/config.xml --> </row> <row> <entry><function>move_uploaded_file</function></entry> <entry>&sm.uidcheck; <!-- TODO: check this --></entry> </row> <!-- TODO: from here on, add warning to the function itself --> <row> <entry><function>chdir</function></entry> <entry>&sm.uidcheck.dir;</entry> </row> <row> <entry><function>dl</function></entry> <entry>&sm.disabled;</entry> </row> <row> <entry><link linkend="language.operators.execution">ters tırnak işlemi</link></entry> <entry>&sm.disabled;</entry> </row> <row> <entry><function>shell_exec</function> (ters tırnakların fonksiyonal eşi)</entry> <entry>&sm.disabled;</entry> </row> <row> <entry><function>exec</function></entry> <!-- dirge: practical reasons => pratiksel neden --> <entry>Sadece <link linkend="ini.safe-mode-exec-dir">safe_mode_exec_dir</link> ile belirtilen dizindeki programları çalıştırabilirsiniz. Pratiksel nedenlerden ötürü şu an için programa giden yolda <literal>..</literal> olmasına izin verilmiyor.</entry> </row> <row> <entry><function>system</function></entry> <entry>Sadece <link linkend="ini.safe-mode-exec-dir">safe_mode_exec_dir</link> ile belirtilen dizindeki programları çalıştırabilirsiniz. Pratiksel nedenlerden ötürü şu an için programa giden yolda <literal>..</literal> olmasına izin verilmiyor.</entry> </row> <row> <entry><function>passthru</function></entry> <entry>Sadece <link linkend="ini.safe-mode-exec-dir">safe_mode_exec_dir</link> ile belirtilen dizindeki programları çalıştırabilirsiniz. Pratiksel nedenlerden ötürü şu an için programa giden yolda <literal>..</literal> olmasına izin verilmiyor.</entry> </row> <row> <entry><function>popen</function></entry> <entry>Sadece <link linkend="ini.safe-mode-exec-dir">safe_mode_exec_dir</link> ile belirtilen dizindeki programları çalıştırabilirsiniz. Pratiksel nedenlerden ötürü şu an için programa giden yolda <literal>..</literal> olmasına izin verilmiyor.</entry> <!-- TODO: not sure. popen uses a completely different implementation Don't know why, don't know whether it's behaving the same --> </row> <row> <entry><function>mkdir</function></entry> <entry>&sm.uidcheck.dir;</entry> </row> <row> <entry><function>rmdir</function></entry> <entry>&sm.uidcheck;</entry> </row> <row> <entry><function>rename</function></entry> <entry>&sm.uidcheck; &sm.uidcheck.dir;<!-- on the old name only, it seems. Is rename preventing moving files? --></entry> </row> <row> <entry><function>unlink</function></entry> <entry>&sm.uidcheck; &sm.uidcheck.dir;</entry> </row> <row> <entry><function>copy</function></entry> <entry>&sm.uidcheck; &sm.uidcheck.dir; (<parameter>kaynak</parameter> ve <parameter>hedef</parameter> için) </entry> </row> <row> <entry><function>chgrp</function></entry> <entry>&sm.uidcheck;</entry> </row> <row> <entry><function>chown</function></entry> <entry>&sm.uidcheck;</entry> </row> <row> <entry><function>chmod</function></entry> <entry>&sm.uidcheck; Ek olarak SUID, SGID ve sticky bitlerini açamazsınız.</entry> </row> <row> <entry><function>touch</function></entry> <entry>&sm.uidcheck; &sm.uidcheck.dir;</entry> </row> <row> <entry><function>symlink</function></entry> <entry>&sm.uidcheck; &sm.uidcheck.dir; (not: sadece hedef kontrol ediliyor)</entry> </row> <row> <entry><function>link</function></entry> <entry>&sm.uidcheck; &sm.uidcheck.dir; (not: sadece hedef kontrol ediliyor)</entry> </row> <row> <entry><function>getallheaders</function></entry> <entry>Güvenli Kipte, 'authorization' ile başlayan başlıklar (büyük/küçük harf ayrımı yok) döndürülmez. Uyarı: Bu <function>getallheader</function> fonksiyonunun aol-server uyarlamasında bozuk!</entry> </row> <row> <entry><filename>php4/main/fopen_wrappers.c</filename> dosyasını kullanan tüm fonksiyonlar </entry> <entry>??</entry> </row> </tbody> </tgroup> </table> </para> </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 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 -->