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

Mind was upgraded to version 4.4.9.

üst 5bb59e86
......@@ -290,6 +290,7 @@ Hata mesajlarının tutulduğu değişkendir, dışarıdan erişime izin vermek
- [request](https://github.com/aliyilmaz/Mind/blob/master/docs/tr-readme.md#request)
- [filter](https://github.com/aliyilmaz/Mind/blob/master/docs/tr-readme.md#filter)
- [firewall](https://github.com/aliyilmaz/Mind/blob/master/docs/tr-readme.md#firewall)
- [csrf_token](https://github.com/aliyilmaz/Mind/blob/master/docs/tr-readme.md#csrf_token)
- [redirect](https://github.com/aliyilmaz/Mind/blob/master/docs/tr-readme.md#redirect)
- [permalink](https://github.com/aliyilmaz/Mind/blob/master/docs/tr-readme.md#permalink)
- [timezones](https://github.com/aliyilmaz/Mind/blob/master/docs/tr-readme.md#timezones)
......@@ -3297,7 +3298,7 @@ SSL etkin bir projenin veri trafiğini, SSL üzerinden iletmeye zorlamak için k
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.
##### Örnek
##### Tanımlanma
$conf = array(
'host' => 'localhost',
......@@ -3309,7 +3310,7 @@ Yetkisiz HTTP POST isteklerini engellemeye yarar, varsayılan olarak `true` beli
'nosniff' => false,
'noxss' => false,
'ssl' => false,
'csrf' => false
// 'csrf' => false
// 'csrf' => true
// 'csrf' => array('limit'=>150)
// 'csrf' => array('name'=>'_token')
......@@ -3322,6 +3323,20 @@ Yetkisiz HTTP POST isteklerini engellemeye yarar, varsayılan olarak `true` beli
echo 'Uzaktan erişime açıktır';
##### Kullanma
<?=$this->csrf_token();?>
----------
## csrf_token()
index.php dosyasında CSRF kuralı etkinleştirildiğinde kullanıldığı yere `token` taşıyan `hidden` tipinde bir input geri döndürmeye yarar.
###### Örnek
<?=$this->csrf_token();?>
----------
## redirect()
......
......@@ -3,7 +3,7 @@
/**
*
* @package Mind
* @version Release: 4.4.8
* @version Release: 4.4.9
* @license GPL3
* @author Ali YILMAZ <aliyilmaz.work@gmail.com>
* @category Php Framework, Design pattern builder for PHP.
......@@ -2777,24 +2777,35 @@ class Mind extends PDO
}
}
if(!isset($_SESSION[$name])){
$_SESSION[$name] = $this->generateToken($limit);
if(!isset($_SESSION['csrf']['token'])){
$_SESSION['csrf']['name'] = $name;
$_SESSION['csrf']['token'] = $this->generateToken($limit);
}
if($_SERVER['REQUEST_METHOD'] == 'POST'){
if($_SESSION[$name] === $this->post[$name]){
if($_SERVER['REQUEST_METHOD'] === 'POST'){
if($_SESSION['csrf']['token'] === $this->post[$name]){
unset($this->post[$name]);
$_SESSION[$name] = $this->generateToken($limit);
$_SESSION['csrf']['name'] = $name;
$_SESSION['csrf']['token'] = $this->generateToken($limit);
} else {
die('A valid token could not be found.');
}
}
echo "<script>document.addEventListener('DOMContentLoaded', (event) => { function appendItem(element, value){ let elements = document.querySelectorAll(element); if(elements.length >= 1){ elements.forEach(function(element) { if(element.value === undefined){ element.innerHTML += value; } else { element.value += value; } }); } } appendItem('form', '<input type=\"hidden\" name=\"".$name."\" value=\"".$_SESSION[$name]."\">'); });</script>";
}
}
/**
* CSRF input
*
* @return string
*/
public function csrf_token(){
if(isset($_SESSION['csrf']['name']) AND isset($_SESSION['csrf']['token'])){
return '<input type="hidden" name="'.$_SESSION['csrf']['name'].'" value="'.$_SESSION['csrf']['token'].'">';
}
}
/**
* Redirect
*
......
File mode changed from 100644 to 100755
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