PHP için Microsoft SQL Driver Nasıl Yüklenir

 PHP için Microsoft SQL Driver yüklemek için ilk olarak uygun driver microsoft sitesinden indirilir. Driver indirmek için aşağıdaki linki kullanabilirsiniz.

https://go.microsoft.com/fwlink/?linkid=2152937

İndirdiğiniz bu dosyayı bir dizine açın. içinde bulunan .dll dosyalarını PHP/ext klasörüne kopyalayın. Bilgisayarınıza kurulu bulunan PHP sürümüne uygun .dll dosyasını bulun. Bulduğunuz uygun dosyayı php.ini dosyasına aşağıdaki gibi ekleyin

extension=php_sqlsrv_74_ts_x64.dll

Burada 74 değeri kulandığınız php versiyonu ile aynı olmalıdır. x64 işlemci mimarinize uygun bir versiyon olmalıdır. Daha sonra web sunucunuzu yeniden başlatın. Sunucunuz IIS ve ya Apache olabilir. Daha sonra aşağıda linki bulunan ODBC driverını bilgisayarınıza kurun.

Microsoft ODBC Driver;

https://go.microsoft.com/fwlink/?linkid=2156851

Kurulumun gerçekleşip gerçekleşmediğini info.php sayfasından kontrol edebilirsiniz. Kurulum tamamlandığında bu sayfada "sqlsrv" isimli bir tablo oluşacaktır.

Not: info.php dosya içeriği <?php phpinfo(); ?> şeklinde olmalıdır.

      

Apache Active Directory NTLM Kimlik Doğrulama

 Apache web sunucusu ile Active Directory hesaplarından NTLM Kimlik Doğrulamasının nasıl yapılacağını inceleyeceğiz. Domainde bir Apache sunucunuz varsa domain kullanıcılarının kendi şifreleri ile local intranet sayfanıza erişmelerini istiyorsanız aşağıdaki gibi kurulumu yapabilirsiniz.

İlk olarak mod_authn_ntlm.so modülünü internetten indirin fakat dikkat edilmesi gereken bir durum var. Apache sunucunuz 32bit veya 64bit olabilir, bunu kontrol edip uygun versiyonu indirmelisiniz. Daha sonra indirdiğiniz dosyayı Apache/modules klasörüne kopyalayın.

Httpd.conf dosyasının içersine aşağıdaki satırı ekleyin.

LoadModule auth_ntlm_module modules/mod_authn_ntlm.so

Aşağıdaki iki modülün aktif olduğundan emin olun. (Satır önünde # olmamalı)

LoadModule ldap_module modules/mod_ldap.so

LoadModule rewrite_module modules/mod_rewrite.so

Aşağıdaki satırları da ekleyin. Web root'da /authenticate isimli bir klasör yoksa oluşturun. Bu klasör için şifreleme yapılacaktır.

RequestHeader unset X_ISRW_PROXY_AUTH_USER
<Location /authenticate >
    #AllowOverride None
    AuthName "Private location"
    AuthType SSPI
    NTLMAuth On
    NTLMAuthoritative On
    <RequireAll>
        <RequireAny>
            Require valid-user
            #require sspi-user EMEA\group_name
        </RequireAny>
        <RequireNone>
            Require user "ANONYMOUS LOGON"
            Require user "NT-AUTORITÄT\ANONYMOUS-ANMELDUNG"
        </RequireNone>
    </RequireAll>
    # use this to add the authenticated username to you header
    # so any backend system can fetch the current user
    # rewrite_module needs to be loaded then
    # while X_ISRW_PROXY_AUTH_USER is your header name
    RequestHeader set X_ISRW_PROXY_AUTH_USER expr=%{REMOTE_USER}
</Location>

Apache sunucusunu yeniden başlatın. Aşağıdaki kodu şifrelediğiniz klasörde bir php dosyasına yazın ve browser üzerinden sayfaya gidin.

<?php echo $_SERVER['REMOTE_USER']; ?>

PHP Güvenlik ve Performans Ayarları

Apache veya IIS üzerinde çalışan PHP için aşağıdaki özellikleri değiştirerek server performansını artırabilirsiniz.

memory_limit : Default "128M"  Bu, bir komut dosyasının ayırmasına izin verilen maksimum bellek miktarını bayt cinsinden ayarlar. Bu, bir sunucudaki tüm kullanılabilir belleği tüketmek için kötü yazılmış komut dosyalarının önlenmesine yardımcı olur. Bellek sınırı olmaması için bu yönergeyi -1'e ayarlayın. Bir int kullanıldığında, değer bayt cinsinden ölçülür. 

realpath_cache_size : Default "4M" PHP tarafından kullanılacak gerçek önbelleğinin boyutunu belirler. PHP'nin birçok dosya açtığı sistemlerde, gerçekleştirilen dosya işlemlerinin miktarını yansıtmak için bu değer artırılmalıdır. 

Boyut, depolanan yol dizelerindeki toplam bayt miktarını artı önbellek girişiyle ilişkili verilerin boyutunu temsil eder. Bu, önbellekte daha uzun yollar depolamak için önbellek boyutunun daha büyük olması gerektiği anlamına gelir. Bu değer, önbelleğe alınabilen farklı yolların sayısını doğrudan kontrol etmez. Önbellek girişi verileri için gereken boyut sisteme bağlıdır.

realpath_cache_ttl : Default "120"  Belirli bir dosya veya dizin için gerçek yol bilgilerinin önbelleğe alınacağı süre (saniye cinsinden). Nadiren değişen dosyalara sahip sistemler için değeri artırmayı düşünün.

https://www.php.net/manual/en/ini.core.php#ini.variables-order

PHP Şifre Güvenliği

PHP dosyaları içerisine kesinlikle password(şifre) yazmayın, passwordleri bilgisayarda başka bir yere konumlandırıp PHP dosyası içerisine bu şifreleri getirebilirsiniz. Ör sifreler.txt isimli bir dosya oluşturun ve şifreyi içine yazın. Sonra bu dosyadaki şifreyi bir değişkene atayın.

$myfile = fopen("E:\sifreler.txt", "r") or die("Unable to open file!");

$plogin=fgets($myfile);

fclose($myfile);

Yukarıdaki kod ile PHP dostanızda $plogin bilgisini şifre olarak kullanabilirsiniz. Bilgisayarı başkaları da kullanıyorsa bu işlem veri güvenliği için yeterli değildir. Bilgiyi aşağıdaki gibi şifreleyerek kullanabilirsiniz. Password bilgisini gizlemek için şifreleyin. Bu kod password bilginizi şifreler. Çıktıyı aldıktan sonra dosyayı silin fakat key bilgisini kaydetmeyi unutmayın.

<?php

$data = 'şifreyi_buraya_yazın';

$cipher = 'AES-128-ECB';

//key bilgisini istediğiniz gibi değiştirebilirsiniz.

$key = 'jfgksjdfgaksgf32423423bbfabsdjeyrwerwer898er2312423543656';

$encoded = openssl_encrypt($data, $cipher, $key); 

echo $encoded;

?>

Password bilgisini şifreledikten sonra E:\sifreler.txt dosyasına bu bilgiyi yazın. Sonra aşağıdaki kodu php dosyanıza ekleyin.

<?php

$myfile = fopen("E:\sifreler.txt", "r") or die("Unable to open file!");

$plogin=fgets($myfile);

fclose($myfile);

$cipher = 'AES-128-ECB';

$key = 'jfgksjdfgaksgf32423423bbfabsdjeyrwerwer898er2312423543656';

$decoded = openssl_decrypt($plogin, $cipher, $key); // çıktı: prototurk.com

echo $decoded;

?>


Google