Güvenlik Kütüphanesi


    × Bunları biliyor muydunuz?
"Başlangıç kontrolcüsü üzerinden $this nesnesini data olarak göndererek statik olmayan sınıflara ilgili data üzerinden erişebilirsiniz."


Güvenlik açıklarına yönelik oluşturulmuş kütüphanedir. 2 adet kütüphaneden oluşmaktadır; Security ve Secure. Özellikle çapraz script, enjeksiyon gibi risk teşkil edecek kullanımları izole etmek için oluşturulmuştur. Hiç bir güvenlik sistemi gibi bizde %100 güvenlik garantisi sağlayamayız. Ancak genel olarak yüksek düzeyde güvenlik sağlanmıştır.

 

 

# Kurulum


ZN dağıtımları için kurulum gerekmez.

↓ composer require znframework/package-security

 

 

# Yöntemler


Void CSRFToken(String $uri = NULL, String $type = 'post')
Void CSRFPost(String $uri = NULL)
Void CSRFGet(String $uri = NULL)
String ncEncode(String $string, Mixed $badWords, Mixed $changeChar)
String xssEncode(String $string)
String injectionEncode(String $string)
String injectionDecode(String $string)
String htmlEncode(String $string, String $type = 'quotes', String $encoding = 'utf-8')
String htmlDecode(String $string, String $type = 'quotes')
String htmlTagClean(String $string, Mixed $allowable = '')
String phpTagEncode(String $string)
String phpTagDecode(String $string)
String phpTagClean(String $string)
String scriptTagEncode(String $str)
String scriptTagDecode(String $str)
String nailEncode(String $str)
String nailDecode(String $str)
String foreignCharEncode(String $str)
String foreignCharDecode(String $str)
String escapeStringEncode(String $str)
String escapeStringDecode(String $str)
This data(String $str)
String get(Void)

 

 

# CSRFToken / CSRFPost (ZN >= 4.3.2)


CSRF ataklarına karşı rasgele veri üretmek için kullanılır. POST datalarını kontrol eder.

Parametreler

String $type = 'post' Post verilerini kontrol eder. Kullanılabilir Seçenekler: post, get
Return Void

Kullanımı

Security::CSRFToken();
Security::CSRFToken('get');
Security::CSRFGet();

 

 

# CSRFGet (ZN >= 4.3.2)


CSRF ataklarına karşı rasgele veri üretmek için kullanılır. GET datalarını kontrol eder.

Parametreler

Void
Return Void

Kullanımı

Security::CSRFGet();

 

 

# NcEncode (ZN >= 1.0.0)


Kötü içerikli olduğunu düşündüğünüz ifadeleri değiştirmek için kullanılır.

Parametreler

String $data Veri.
Mixed $badChars Kötü içerikli karakter veya karakter grupları.
Mixed $badChars Kötü içerikli karakterlerin yerini alacak olan değer.
Return String

Kullanımlar

echo Security::ncEncode('Hello or Goodbye', 'or', '[xxx]');
Hello [xxx] Goodbye

2. ve 3. parametre dizi türü veride içerebilir. Böylece birden fazla karakter grubunu aynı anda izole edebilirsiniz.

echo Security::ncEncode('Hello or Goodbye', ['Hello', 'Goodbye'], ['[xxx]', '[yyy]']);
[xxx] or [yyy]

 

 

# XssEncode (ZN >= 1.0.0)


Genel olarak script kodlardan kaynaklı çapraz enjeksiyonları engellemek için geliştirilmiştir.

Parametreler

String $data Veri.
Return String

Kullanımlar

echo Security::xssEncode('<script>alert(1);script>');
&#60;script&#62;alert(1);&#60;/script&#62;

 

 

# InjectionEncode / InjectionDecode (ZN >= 1.0.0)


SQL enjesiyonlarına karşı oluşturulmuş yöntemdir. Enjeksiyonlar genellikle backslash sembolü ile yapılır.

Parametreler

String $data Veri.
Return String

Kullanımlar

$data = Security::injectionEncode('ZN" Framework');
echo $data;
ZN[blackslash]" Framework

Bu dönüşümü eski haline getirmek için;

echo Security::injectionDecode($data);
ZN" Framework

gibi kullanılır.

 

 

# HtmlEncode / HtmlDecode (ZN >= 1.0.0)


HTML karakterleri olan <, > ve tırnak işaretlerini numerik koda çevirir.

Parametreler

String $data Veri.
Mixed $type = 'quotes' Çevrim türü.
Seçenekler quotes, nonquotes, compat
Mixed $encoding = 'utf-8' Kodlama türü.
Return String

Kullanımlar

$data = Security::htmlEncode('<b>ZN4</b>');
echo $data;
&lt;b&gt;ZN4&lt;/b&gt;

Bu dönüşümü eski haline getirmek için;

echo Security::htmlDecode($data);
<b>ZN4</b>

gibi kullanılır.

 

 

# HtmlTagClean (ZN >= 1.0.0)


HTML etiketlerini siler.

Parametreler

1.0.0 String $string Veri.
6.49.4 Mixed $allowable = '' İstisna etiketler.
Return String

Kullanımlar

$data = Security::htmlTagClean('<b>ZN Framework</b>');
echo $data;
ZN Framework
6.49.4 Güncellemesi

Bu güncellemede 2. parametre ile silinmemesi istenen etiketler belirtilebilir. Ayrıca silme işleminin sağlıklı gerçekleştirilebilmesi için veri içinde varsa encode edilmiş HTML etiketleri öncelikle decode edilir ve sonra silme işlemi gerçekleştirilir. Bu nedenle bu işlemden önce Security::htmlDecode() kullanımına ihtiyaç duyulmaz.

$data = Security::htmlTagClean('<b><i>ZN Framework</i></b>', '<i>');
echo $data;
ZN Framework

PHP 7.4 sürümü itibari ile 2. parametre dizi olarak kullanılabilir.

$data = Security::htmlTagClean('<b><i><u>ZN Framework</u></i></b>', ['<i>', '<u>']);
echo $data;
ZN Framework

 

 

# PhpTagEncode / PhpTagDecode (ZN >= 1.0.0)


PHP taglarını numerik koda çevirir.

Parametreler

String $data Veri.
Return String

Kullanımlar

$data = Security::phpTagEncode('<?php echo 1;');
echo $data;
&#60;&#63;php echo 1;

Bu dönüşümü eski haline getirmek için;

echo Security::phpTagDecode($data);
<?php echo 1;

gibi kullanılır.

 

 

# PhpTagClean (ZN >= 1.0.0)


PHP etiketlerini siler.

Parametreler

String $string Veri.
Return String

Kullanımlar

$data = Security::phpTagClean('<?php ZN Framework ?>');
echo $data;
ZN Framework

 

 

# ScriptTagEncode / ScriptTagDecode (ZN >= 3.0.7)


Script taglarını numerik koda çevirir.

Parametreler

String $data Veri.
Return String

Kullanımlar

$data = Security::scriptTagEncode('<script>alert(1);</script>');
echo $data;
&#60;script&#62;alert(1);&#60;/script&#62;

Bu dönüşümü eski haline getirmek için;

echo Security::scriptTagDecode($data);
<script>alert(1);</script>

gibi kullanılır.

 

 

# NailEncode / NailDecode (ZN >= 1.0.0)


Tırnak işaretlerini numerik koda çevirir.

Parametreler

String $data Veri.
Return String

Kullanımlar

$data = Security::nailEncode('ZN" Framework');
echo $data;
ZN&#34; Framework

Dönüşümü eski haline getirmek için;

echo Security::nailDecode($data);
ZN" Framework

gibi kullanılır.

 

 

# ForeignCharEncode / ForeignCharDecode (ZN >= 2.0.0)


Yabancı karakterleri numerik koda çevirir.

Parametreler

String $data Veri.
Return String

Kullanımlar

$data = Security::foreignCharEncode('Àŕç');
echo $data;
&#192;&#341;&#231;

Dönüşümü eski haline getirmek için;

echo Security::foreignCharDecode($data);
Àŕç

gibi kullanılır.

 

 

# EscapeStringEncode / # EscapeStringDecode (ZN >= 2.0.0)


Kullanımları injectionEncode() ve injectionDecode() yöntemleri ile aynıdır.

Parametreler

String $data Veri.
Return String

 

 

# Data (ZN >= 4.0.23)


Secure:: kütüphanesi Security:: kütüphanesinin yöntemlerini kullanan bir filtreleme kütüphanesidir. Güvenlik süzgecinden geçecek veriyi belirtmek için kullanılır.

Parametreler

String $data Veri.
Return This

Kullanımlar

echo Secure::data('<?php echo "This is"; ?> <b>example code!</b>')
           ->phpTagEncode()
           ->htmlTagEncode()
           ->get();
&amp;#60;&amp;#63;php echo &quot;This is&quot; &amp;#63;&amp;#62; &lt;b&gt;example code!&lt;/b&gt;

 

 

# Get (ZN >= 4.0.23)


Filtrelemeyi bitirmek için kullanılan yöntemdir.

Parametreler

Void
Return String

Kullanımlar

echo Secure::data('<?php echo "This is"; ?> <b>example code!</b>')
           ->phpTagEncode()
           ->htmlTagEncode()
           ->injectionEncode()
           ->get();
&amp;#60;&amp;#63;php echo &quot;This is&quot; &amp;#63;&amp;#62; &lt;b&gt;example code!&lt;/b&gt;