$ _GET Id en güçlü güvenlik standartlarını uygulamak için en iyi yolu nedir?

6 Cevap php

Ben yorumlar, bloglar, gelen kutusu vb için URL kimliklerini değiştiren insan için güçlü bir güvenlik önlemi arıyorum ..

Herhangi bir öneriniz?

6 Cevap

Alacağınız verilerini doğrularken size rakam bekliyorsanız eğer, basamak almak emin olun, harika bir fikir.

if(isset($_GET['id']) && ctype_digit($_GET['id']))
{
  $id = $_GET['id'];
}else
{
  $id = 0;
}

Sizin endişe sadece bunları size birkaç seçenek var görüntü 42 göstermek istedim görüntüyü 44 talep gibi şeyleri görmek için adresler değişiyor insanlar ise:

  • Kullanıcı öğesini kullanmak için gerekli izni vardır sağlamak için sayfada çeşitli kontroller içerir.
  • Ürün iletmenin yapmak için url öğeyi karma.
  • Rastgele numaraları veya karmaları kullanmak, ardışık sayılar kullanmayın.

Bu eylemi gerçekleştirmek için izin olup olmadığını görmek için oturum izinleri kontrol?

Bunu yapmak için izin iseniz, o eylemi gerçekleştirmek. Değilse, o zaman onlara bir 403 ver.

Bu sadece bir kimlik varsa (sayısal, sanırım), yapmanız gereken bütün bir tamsayı olarak doğrulamak olduğunu:

$id = (int) $_GET['id'];

Sonra da veritabanını sorgulayabilirsiniz. Geçersiz olduğunda kimliği yok ve ne zaman ($id Bu durumda 0 olacak çünkü) boş dönüş setleri alacak.

Ben bu dijital get istekleri imzalanması ve URL'ye çalışmak olacağını ekleyerek hayal ediyorum.

Sadece uygulama için bilinen özel bir anahtar ile açın ve daha sonra GET değişkenleri karma ve bir & sig = blahblahblah bir imza sağlar.

Bu muhtemelen işe, ama gerçekten GET değişkenleri korumak için gerek anlamıyorum. Düzgün tasarlanmış, gerçekten GET değişkenlerin ne önemli olmamalı. Düzgün tasarlanmış bir uygulamayı kullanıcı GET değişkenleri zararlı bir şey yapmak için izin vermemelidir.

Her şeyden önce, kritik bilgi için $ _GET güvenmeyin. Her kullanıcı bu açıklama kimliği, blog kimliği, ne olursa olsun görüntüleme iznine sahip olup olmadığını çift kontrol edin. ID filtreleme gibi - basit intval() yardımcı olacaktır (aynı zamanda 0 sitesini ele unutmayın)