Kaydet (Commit) b4e51768 authored tarafından Ali Yılmaz's avatar Ali Yılmaz 🎯

Mind was upgraded to version 4.5.0

üst 3889636d
......@@ -3268,7 +3268,7 @@ veya
## firewall()
Bu fonksiyon, Clickjacking, XSS ve MIME Sniffing davranışlarını engellemeye yarar. Varsayılan olarak tüm alt ayarlar tanımlandığı için parametre belirtme zorunluluğu yoktur. Varsayılan olarak __construct() metodu içerisinde çalıştırılarak etkinleştirilmiştir.
Bu fonksiyon, Clickjacking, XSS, MIME Sniffing, CSRF davranışlarını engellemeye yarar. Varsayılan olarak tüm alt ayarlar tanımlandığı için parametre belirtme zorunluluğu yoktur. Varsayılan olarak __construct() metodu içerisinde çalıştırılarak etkinleştirilmiştir.
#### noiframe
......@@ -3293,7 +3293,13 @@ SSL etkin bir projenin oturumlarını, SSL üzerinden kullanıcıya iletmek içi
SSL etkin bir projenin veri trafiğini, SSL üzerinden iletmeye zorlamak için kullanılır, bu sayede kullanıcıyla sunucu arasındaki haberleşmenin SSL ile korunması sağlanmış olur. Varsayılan olarak `true` belirtilmiştir.
##### Tanımlanma
#### csrf
Yetkisiz HTTP POST isteklerini engellemeye yarar, varsayılan olarak `true` belirtilmiştir. `token` adı ve rastgele parametre uzunluğu belirtmek mümkündür, varsayılan olarak token adı `csrf_token`, parametre uzunluğuysa `200` belirtilmiştir.
Bu alt ayar etkin olduğu sürece herhangi bir form'dan gönderilenlerde `csrf_token` parametresini arayacak, bulamadığı taktirde ise söz konusu isteği durduracaktır. Form'a token input'unu eklemek için form içinde bir yere bu `<?=$_SESSION['csrf']['input'];?>` parametreyi belirtmek gerekir.
##### Örnek
$conf = array(
'host' => 'localhost',
......@@ -3304,7 +3310,12 @@ SSL etkin bir projenin veri trafiğini, SSL üzerinden iletmeye zorlamak için k
'noiframe' => false,
'nosniff' => false,
'noxss' => false,
'ssl' => false
'ssl' => false,
'csrf' => false
// 'csrf' => true
// 'csrf' => array('limit'=>150)
// 'csrf' => array('name'=>'_token')
// 'csrf' => array('name'=>'_token', 'limit'=>150)
)
);
......@@ -3312,6 +3323,7 @@ SSL etkin bir projenin veri trafiğini, SSL üzerinden iletmeye zorlamak için k
echo 'Uzaktan erişime açıktır';
**Bilgi:** Her geçerli `token`'a sahip HTTP POST isteği sonrası parametreler değiştirilir.
----------
......
......@@ -3,7 +3,7 @@
/**
*
* @package Mind
* @version Release: 4.4.9
* @version Release: 4.5.0
* @license GPL3
* @author Ali YILMAZ <aliyilmaz.work@gmail.com>
* @category Php Framework, Design pattern builder for PHP.
......@@ -2756,6 +2756,46 @@ class Mind extends PDO
}
$limit = 200;
$name = 'csrf_token';
if(!isset($conf['firewall']['csrf'])){
$conf['firewall']['csrf'] = true;
}
if($conf['firewall']['csrf'] !== false){
if(is_array($conf['firewall']['csrf'])){
if(isset($conf['firewall']['csrf']['name']) AND !isset($conf['firewall']['csrf']['limit'])){
$name = $conf['firewall']['csrf']['name'];
}
if(!isset($conf['firewall']['csrf']['name']) AND isset($conf['firewall']['csrf']['limit'])){
$limit = $conf['firewall']['csrf']['limit'];
}
if(isset($conf['firewall']['csrf']['name']) AND isset($conf['firewall']['csrf']['limit'])){
$name = $conf['firewall']['csrf']['name'];
$limit = $conf['firewall']['csrf']['limit'];
}
}
if(!isset($_SESSION['csrf']['token']) OR !isset($_SESSION['csrf']['name']) OR !isset($_SESSION['csrf']['input'])){
$_SESSION['csrf'] = array(
'name' => $name,
'token' => $this->generateToken($limit)
);
$_SESSION['csrf']['input'] = "<input type=\"hidden\" name=\"".$_SESSION['csrf']['name']."\" value=\"".$_SESSION['csrf']['token']."\">";
}
if(isset($this->post[$name]) AND $_SERVER['REQUEST_METHOD'] === 'POST'){
if($this->post[$name] !== $_SESSION['csrf']['token']){
die('A valid token could not be found.');
} else {
unset($this->post[$name]);
unset($_SESSION['csrf']);
}
}
}
}
/**
......@@ -3748,6 +3788,12 @@ class Mind extends PDO
}
}
if(is_array($result)){
if(empty($result[0]) AND empty($result[1])){
return [];
}
}
return $result;
}
......
......@@ -11,7 +11,12 @@ $conf = array(
'noiframe' => false,
'nosniff' => false,
'noxss' => false,
'ssl' => false
'ssl' => false,
'csrf' => false
// 'csrf' => true
// 'csrf' => array('limit'=>150)
// 'csrf' => array('name'=>'_token')
// 'csrf' => array('name'=>'_token', 'limit'=>150)
)
);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment