Yerine kimliğini kullanarak / azalmak Birincil anahtar şifrelemek?

3 Cevap php

Ben her zaman birisi bir kayda erişmek için izin olup olmadığını kontrol rağmen ben id = 2 yapar? Id = 1 olması "etrafında karıştırmak" için günaha etmemektedir hissediyorum, ben normalde sorgu dizeleri bir UID kullanın.

Ben bunun yerine sadece kayıt id yanı sınar depolamak için ihtiyaç olarak birden çok tablo arasında aramalarını yapmak biraz kıvrık yapar olsa bulmak.

Ben sorgu dizesi yoluyla kimlik numarasının bir şifreli dize geçmek ve daha sonra bir veritabanı sorgu yapmak için şifresini çözmek için ise bu büyük yükü eklersiniz?

Bir varsa yararlı olacaktır ki - bu (ben hala belli ki onlar kaydını görüntülemek için izniniz olduğunu kontrol olsa) sadece birincil anahtar ile çalışabilir ve benzersiz bağlantılar her oturum yapmak (ya da bir oturum boyunca her zaman değişebilir) anlamına gelecektir AJAX sürü onlarla oynamaya çalışan istemediğiniz içerik odaklı.

Bu gerçekten kötü bir fikir mi?

3 Cevap

Kesinlikle her istek üzerine izinleri kontrol etmelisiniz. Siz güvenlik için sadece veri girişi güvenmemelisiniz!

Ve bunu şifresini eğer hatırlıyorum, yani sitenize kesmek isteyen kötü niyetli bir kullanıcı olabilir.

Mağaza izinleri bir oturum kullanarak performans lehine teminat kapalı bir ticaret ve ben bunu yapmak için ortalama güvenlik olacağını düşünüyorum.

Ama yine de - hassas veri varsa - her istek üzerine her zaman kontrol edin. Daha az güvenlik adına birkaç mikrosaniye için optimize etmeyin.


Ben bir yorum gerçek sorunu gördüm şimdi, ben kullanıcı yapar yenilemek her ek karma çeşit kullanarak önermek ve kullanıcı oturumunda kaydedebilirsiniz. Kullanıcı örneğin aynı karma kullanıyorsa sonra kontrol edin:

$hash = md5(microtime());
$_SESSION['secret_user_hash'] = $hash;

Ve gibi URL'ler koydu:

&z=<?php echo substr($hash, 5, 10); ?>

Aynı hash Ve eğer bir kullanıcı yapar, sonra istek sadece kontrol.

Eğer ağır AJAX kullanarak eğer oturumda değişiklik olduğunda her zaman, senin karma güncellemeniz gerektiğini unutmayın. I düşünebilirsiniz en iyi yolu (5) rastgele Hashesh oturumunda bir dizi tutmak ve sorgu için rasgele bunları kullanıyoruz. Yani büyük bir havuz var ve her istekten sonra güncellemek zorunda değilsiniz.

Neden sadece kimlikleri base64encode/decode değil? Sadece onlar aslında zaten oynamak için izniniz yok oyuncaklar ile deneme meşru kullanıcıların önlemek için bu yapıyorsanız, onları vazgeçirmek için özellikle fantezi bir şey yapmanın hiçbir amaç gerçekten var.

Lütfen UID bir karma yapmak ve yoluyla bu geçmektedir.

Eğer rot13 / base64 kodlamak o zaman, tüm şema ve kod temeli refactor istemiyorum sürece.