
Gelen veriyi değiştirmeyi engelleme
8
●540
- 23-09-2018, 17:33:42Merhaba ufak çaplı bir panel çalışmam var ama aşağıda resimde görüldüğü gibi bir sorunum var Chrome consolede kırmızı renkte işaretlediğim yerdeki disabled'i silip value kısmını değiştirince seçenek açılıp post'ladığımızda değişen veri geliyor bunu nasıl engelleyebilirim ?

- 23-09-2018, 18:57:49instads adlı üyeden alıntı: mesajı görüntüleOnurTasci adlı üyeden alıntı: mesajı görüntüleTeşekkürler değerli yorumlarınız için şifreleme ve sabit değerleri dizinleyerek hallettim .strawz adlı üyeden alıntı: mesajı görüntüle
- 25-09-2018, 18:04:27Tam olarak söylemek istediğinizi anlamadım ama client güvenilir değildir, tüm önlemleri server tarafında almanız gerekir.
Örneğin optionslar server tarafında elinizde olmalı aşağıdaki gibi bir diziyi döngü ile selectboxa aktarın postda gelen veriyi dizi ile karşılaştırın. Dizideki değer varsa fakat disable true ise işlem yapmayın hata döndürün.
$optioans = array( array("value" => 50000, "text" => "50.000 Kredi", "disable" => false), array("value" => 75000, "text" => "75.000 Kredi", "disable" => true) );
Bu diziyi ister iki sayfayada koyun ister her iki sayfayada include edilen başka bir sayfada tanımlayın.
$options = array( array("value" => 50000, "text" => "50.000 Kredi", "disable" => false), array("value" => 75000, "text" => "75.000 Kredi", "disable" => true), array("value" => 100000, "text" => "100.000 Kredi", "disable" => false), array("value" => 150000, "text" => "150.000 Kredi", "disable" => false) );form.php
<form method="post"> <select name="test"> <?php foreach ($options as $option){ echo "<option value='{$option['value']}'", $option['disable']?' disabled':'',">{$option['text']}</option>"; } ?> </select> <input type="submit"> </form>post.php
if(!empty($_POST)) { if (is_valid_options($options, $_POST['test'])) { //true dönerse form doğru post edilmişse ilgili değişkene atayıp kaydedebilirsiniz $test = $_POST['test']; echo $test; } else { //false dönerse form değiştirilmiş demektir hata mesajı verir kayıt işlemi yapmazsınız echo 'hata oluştu'; } } function is_valid_options($options, $value) { foreach ($options as $optioan) { if($optioan['value'] == $value && $optioan['disable'] === false){ return true; } } return false; } - 26-09-2018, 09:30:06Kimlik doğrulama veya yönetimden onay bekliyor.Şöyle düşünelim,
diyelim herşey normal, adam 50bin kredi gönderecek, bunun bir ücreti bedeli var diyelim. 50bin i seçti gönderdi. Ücretini düştünüz.
Sonra akıllının biri 50 bin kredilik optionu seçti gönderdi ama valuesini 750bin yaptı. Sanıyor ki 50bin kredinin ücretine aldım. Ama siz arka tarafta baktınız ki 750bin gelmiş, o zaman 750bin liralık ücret yansıtırsınız.
Yani seçenekler arasında değişiklik yapmasının bir önemi yok. isterse hepsini 750bin yapsın. Zaten 50bin ve 750bin seçme hakkına sahip yani yerlerini değiştirmesi birşey ifade etmiyor.
Ama seçenekler arasında olmayan 647bin olarak değiştirdi. O zaman bu seçenek yoktur diye hata dönersiniz. Yani valueler ile oynamasının hiçbir etkisi olamaz. 50bin i 750bin yaptıysa 750bin seçme hakkı da zaten varsa bu bir problem değildir. Bu işle uğraşan kişinin boşuna zaman kaybıdır sadece. Şifreleme yapmanıza da gerek yok yani. Sizin arka tarafta yapmanız gereken, gelen verinin karşılığı ne ise onunla işlem yapmaktır. Yani id olsaydı diyelim, 1,2,3,4,5 idlerini gönderiyor olsaydı, size 3 geldiğinde siz bakardınız hmmm bu 75bin kredi demek. o zaman bunun ücretini düşeyim. adam 2 ile 3 ü değiştirdiyse size gelen 2 olur. o zaman 2 ye göre işlem yaparsınız. 6 gelirse de hata dönersiniz. Yani hepsinin bir karşılığı olduğu sürece isterse optionları checkbox a çevirsin öyle göndersin. Sizi hiç alakadar etmez.
