PHP ve Suhosin Kullanımda AJAX Problemi


erdem.corapcioglu
PHP ve Suhosin Kullanımda AJAX Problemi

Sunucu güvenliği için Suhosin tercihi yapanların karşılaştığı problemlerden biri de güvenlik ayarları nedeniyle kullanılamaz hale gelen uygulamalar olarak karşımıza çıkmakta …

Benzeri bir durumu geçtiğimiz günlerde sunucularımızda yaptığımız bir güncelleme sonrası yaşadık. AJAX kullanımı yapan uygulamalarda formların güncellenmediği ve hatta çalışan çağrı kalmadığını gözlemledik. Sunucu kayıtlarını incelediğimizde aşağıdakine benzer satırlar listeleniyordu;

server suhosin[—]: ALERT – configured request variable name length limit exceeded …

ALERT – dropped 2 request variables – (— in GET, — in POST, — in COOKIE) …

Bu noktada güvenlik ayarlarının çok katı olduğu ve gelen tüm istekleri engellediğine dair sonuca kısa bir araştırma sonucu ulaştım.

Yapılması gereken limitlerin arttırılması ve bazı özelliklerin kapatılması olarak belirlendi. Sırasıyla isim/gönderi limitlerinin arttırılması ve crypt değerlerinin kapatılması işlemlerini gerçekleştirdik. crypt değerlerini bulabilmek ve mevcut değerlerini öğrenmek için komut satısında aşağıdaki işlemi yapmak yeterli oldu.

php -i | grep suhosin | grep crypt

Bu komut çalıştırıldığında ekrana gelen çıktı aşağıda örneklenmiştir;

suhosin.cookie.cryptdocroot => Off => Off
suhosin.cookie.cryptkey => [ protected ] => [ protected ]
suhosin.cookie.cryptlist => no value => no value
suhosin.cookie.cryptraddr => 0 => 0
suhosin.cookie.cryptua => Off => Off
suhosin.cookie.encrypt => Off => Off
suhosin.session.cryptdocroot => Off => Off
suhosin.session.cryptkey => [ protected ] => [ protected ]
suhosin.session.cryptraddr => 0 => 0
suhosin.session.cryptua => Off => Off
suhosin.session.encrypt => Off => Off

Burada listelenen ayarlar ve yukarıda bahsettiğim limitler ile ilgili problemleri çözmek amacıyla sistem tarafından kullanılan php.ini (örnek: /usr/local/lib/php.ini) dosyası içerisinde aşağıdaki güncellemeleri yapmak yeterli olmuştur.

Yukarıda listelenen ayarlar düzenleme yapılmış bir sunucudan alındığı için “Off” olarak gözükmektedir.

[suhosin]
suhosin.get.max_array_depth = 50
suhosin.get.max_array_index_length = 64
suhosin.get.max_name_length = 128
suhosin.get.max_totalname_length = 256
suhosin.get.max_value_length = 2048
suhosin.get.max_vars = 100
suhosin.get.disallow_nul = On
suhosin.request.max_array_depth = 100
suhosin.request.max_array_index_length = 64
suhosin.request.max_totalname_length = 256
suhosin.request.max_value_length = 65000
suhosin.request.max_vars = 2000
suhosin.request.max_varname_length = 128
suhosin.request.disallow_nul = On
suhosin.post.max_vars = 2000
suhosin.post.max_array_depth = 100

suhosin.post.max_array_index_length = 128
suhosin.post.max_totalname_length = 256
suhosin.post.max_value_length = 65000
suhosin.post.disallow_nul = On
suhosin.post.max_name_length = 128
suhosin.post.max_vars = 200000
suhosin.request.max_vars = 20000
suhosin.post.max_value_length = 265000
suhosin.request.max_value_length = 265000
suhosin.cookie.cryptdocroot = off
suhosin.cookie.cryptua = off
suhosin.cookie.encrypt = off
suhosin.session.cryptdocroot = off
suhosin.session.cryptua = off

php.ini içerisinde ilgili güncellemeleri yaptıktan sonra apache yeniden başlatılmalıdır.

Umarım yararlı olur 🙂

1 Yıldız2 Yıldız3 Yıldız4 Yıldız5 Yıldız (Oylanmamış)
147 Okuma
Show Comments (0)

Yorumlar

*