<p>CGI’yi belli dizinlerle sınırlamak yöneticiye bu dizinlerde daha iyi
denetim imkanı sağlar. Bu kaçınılmaz olarak <codeclass="directive"><ahref="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code>’sız CGI’den çok daha
güvenlidir, ancak bu dizinlere yazma hakkı olan kullanıcılarınız
güvenilir kişiler olması ve site yöneticisinin de olası güvenlik
açıklarına karşı CGI betiklerini ve programlarını denemeye istekli
olması şartıyla.</p>
<p>Çoğu site yöneticisi <code>ScriptAlias</code>’sız CGI yerine bu
<p>Sunucunun bir parçası gibi çalışan, <code>mod_php</code>,
<code>mod_perl</code>, <code>mod_tcl</code> ve <code>mod_python</code>
gibi gömülü betik çalıştırma seçenekleri sunucuyu çalıştıran
kullanıcının aidiyetinde çalışırlar (<codeclass="directive"><ahref="../mod/mpm_common.html#user">User</a></code> yönergesine bakınız). Bu bakımdan bu betik
yorumlayıcılar tarafından çalıştırılan betikler, sunucu kullanıcısının
eriştiği herşeye erişebilirler. Bazı betik yorumlayıcıların getirdiği
bazı sınırlamalar varsa da bunlara pek güvenmemek, gerekli sınamaları
<h2><aname="protectserverfiles"id="protectserverfiles">Sunucu dosyalarının öntanımlı olarak korunması</a></h2>
<p>Apache’nin ister istemez yanlış anlaşılan yönlerinden biri öntanımlı erişim özelliğidir. Yani siz aksine bir şeyler yapmadıkça, sunucu normal URL eşleme kurallarını kullanarak bir dosyayı bulabildiği sürece onu istemciye sunacaktır.</p>
<p>Böylece, istemcilerin tüm dosya sisteminizi gezmelerine izin vermiş olursunuz. Bu işlemin sonuçlarının önünü almak için sunucu yapılandırma dosyanıza şunları yazın:</p>
<divclass="example"><p><code>
<Directory />
<spanclass="indent">
Order Deny,Allow <br/>
Deny from all
</span>
</Directory>
</code></p></div>
<p>Bu suretle, dosya sisteminize öntanımlı erişimi yasaklamış olursunuz. Erişime izin vermek istediğiniz dizinler için uygun <codeclass="directive"><ahref="../mod/core.html#directory">Directory</a></code> bölümleri eklemeniz yeterli olacaktır. Örnek:</p>
<divclass="example"><p><code>
<Directory /usr/users/*/public_html>
<spanclass="indent">
Order Deny,Allow <br/>
Allow from all
</span>
</Directory><br/>
<Directory /usr/local/httpd>
<spanclass="indent">
Order Deny,Allow <br/>
Allow from all
</span>
</Directory>
</code></p></div>
<p><codeclass="directive"><ahref="../mod/core.html#location">Location</a></code> ve <codeclass="directive"><ahref="../mod/core.html#directory">Directory</a></code> yönergelerinin etkileşimine de özellikle önem vermelisiniz; örneğin <code><Directory /></code> erişimi yasaklarken bir <code><Location /></code> yönergesi bunu ortadan kaldırabilir.</p>
<p><codeclass="directive"><ahref="../mod/mod_userdir.html#userdir">UserDir</a></code> yönergesi de size buna benzer bir oyun oynayabilir; yönergeye <code>./</code> atamasını yaparsanız, root kullanıcısı söz konusu olduğunda yukarıda ilk örnekteki durumla karşılaşırız. Apache 1.3 veya üstünü kullanıyorsanız, sunucu yapılandırma dosyanızda aşağıdaki satırın mutlaka bulunmasını öneririz:</p>
<p>Sunucunuzda olup biteni günü gününe bilmek istiyorsanız <ahref="../logs.html">günlük dosyalarına</a> bakmalısınız. Günlük dosyaları sadece olup biteni raporlamakla kalmaz, sunucunuza ne tür saldırılar yapıldığını ve güvenlik seviyenizin yeterli olup olmadığını anlamanızı da sağlarlar.</p>
by server configuration: /usr/local/apache/htdocs/.htpasswd
</code></p></div>
<p>Gördüğünüz gibi günlük dosyaları sadece ne olup bittiğini raporlar, bu bakımdan eğer istemci <code>.htpasswd</code> dosyasına erişebiliyorsa <ahref="../logs.html#accesslog">erişim günlüğünüzde</a> şuna benzer bir kayıt görürsünüz:</p>
<pclass="apache">Copyright 2008 The Apache Software Foundation.<br/><ahref="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>