lostyazilim
tr.link

PHP+MYSQL+ID=GÜVENLİK=Id yerine sayı+harflerden oluşan karışık bir kod kullanmak!

19 Mesajlar 4.448 Okunma
acebozum
tr.link

BEYAZMASTER BEYAZMASTER YÜCE ALLAH'IN aciz 1 kulu Kullanıcı
  • Üyelik 04.02.2020
  • Yaş/Cinsiyet 43 / E
  • Meslek Yazılım...
  • Konum Diğer
  • Ad Soyad O** B**
  • Mesajlar 597
  • Beğeniler 154 / 153
  • Ticaret 0, (%0)
Merhabalar...

Uzun zamandır netleştirmeye çalıştığım önemli olduğunu düşündüğüm "id" ile ilgili birtakım konular hakkındaki görüşlerinizi öğrenmek isterim mümkünse...



1) Veri tablosunda id kullanmak şart mıdır?

2) İd'nin auto icrement olması ile sequence olması hakkındaki görüşleriniz / tercihleriniz...?

3) Silinen kayıtlara ait id değerlerini yeni bir kayıt oluştururken otomatik olarak yeniden kullanabilmek için ne yapmalıyız?

4) Veri tablomuzda 1000 tane karışık (45548, 54567, 3456, gibi) id'li kayıt olduğunu düşünelim.
Bu 1000 kayıtın id'lerini 1'den 1000'e kadar yeniden tanımlamak için ne yapmamız gerekiyor?


5) EN ÖNEMLİ KONU DA BU;

Id yerine sayı+harflerden oluşan karışık bir kod kullanmak!!!

Daha güvenli midir?

Güvenlik dışında başka ne tür avantajlar sağlar?

Dezavantajları olur mu?




Vakıf olduğunuz maddeler varsa görüşlerinizi paylaşır mısınız?

Teşekkür ederim şimdiden...
 

 

ÖNCE "İYİ,DOĞRU,GÜZEL BİR İNSAN" OLMAK (VEFA,TEVAZZU,NAİFLİK,SAYGI,...) GEREK!
Sonra wm oluruz.
elektronikssl
webimgo

AzveNet AzveNet WM Aracı Kullanıcı
  • Üyelik 13.06.2019
  • Yaş/Cinsiyet 43 / E
  • Meslek Serbest
  • Konum İstanbul Anadolu
  • Ad Soyad C** E**
  • Mesajlar 367
  • Beğeniler 69 / 147
  • Ticaret 0, (%0)
1- hayır. İd atamasını genel olarak sorguları like ile ağırlaştırmamak adına kullanıyoruz. Yani id kullanmayıp bir kullanıcıyı farjlı fieldlarla where ile bulabilirsiniz ki genel olarak arama sorgularında tam olarak bu yapılır. İd biraz daha kolaylaştırır bunları.
2- Ai gayet makul. Sonuçta eşsiz bir değer lazım.
3- tam hatırlamıyorum ama daha önce yapıyordum db yapısıyla alakalı. Bile yeşillendirsin :)
4- idi silio tekrar bi id fieldı oluşturmalı.
5- güvenlikle alakalı değil tam olarak. Dediğiniz değerin yer kaplaması dışında bi eksisi olacağını sanmıyorum. İd değerini uniqe olarak kullanmak ana amaç. Farklı bir fieldıda uniqe yapıp id gibi kullanabilirsiniz. Mesela wp de url yapısıda uniqe dir. Orada kalıcı bağlantı db de aratılıp getirilir. Bağlantı yapısını değiştirdiğinizde ona göre fieldlarda arar. Aynı zamanda 1. Sorunuzunda açıklaması.
BEYAZMASTER

kişi bu mesajı beğendi.

İmkansız olduğunu düşünürsen hiç birşey başaramazsın.

halukku halukku WM Aracı Kullanıcı
  • Üyelik 16.03.2016
  • Yaş/Cinsiyet 38 / E
  • Meslek Yazılım
  • Konum İstanbul Avrupa
  • Ad Soyad H** K**
  • Mesajlar 74
  • Beğeniler 15 / 32
  • Ticaret 4, (%100)
Eğer idlerin görünmesinden kaynaklı güvenlik kaygılarınız varsa, bunu veritabanındaki id yapısına dokunmadan alternatif metodlar ile çözebilirsin. Mesela id görülen yerlerde id yi bir anahtar ile kriptolayabilirsin. sunucu taraflı yazılımında aynı anahtar ile id nin kriptosunu çözüp kullanabilirsin. hatta daha karmaşık olmasını istiyorsanız sağına ve soluna belli karakterler ile sınırlayan random sayılar ekleyerek uzatabilirsin. bu şekilde sürekli değişen ve karmaşık karakterlerden oluşan bir id ile çalışmış olursunuz.
BEYAZMASTER

kişi bu mesajı beğendi.

BEYAZMASTER BEYAZMASTER YÜCE ALLAH'IN aciz 1 kulu Kullanıcı
  • Üyelik 04.02.2020
  • Yaş/Cinsiyet 43 / E
  • Meslek Yazılım...
  • Konum Diğer
  • Ad Soyad O** B**
  • Mesajlar 597
  • Beğeniler 154 / 153
  • Ticaret 0, (%0)

AzveNet adlı üyeden alıntı

1- hayır. İd atamasını genel olarak sorguları like ile ağırlaştırmamak adına kullanıyoruz. Yani id kullanmayıp bir kullanıcıyı farjlı fieldlarla where ile bulabilirsiniz ki genel olarak arama sorgularında tam olarak bu yapılır. İd biraz daha kolaylaştırır bunları.
2- Ai gayet makul. Sonuçta eşsiz bir değer lazım.
3- tam hatırlamıyorum ama daha önce yapıyordum db yapısıyla alakalı. Bile yeşillendirsin :)
4- idi silio tekrar bi id fieldı oluşturmalı.
5- güvenlikle alakalı değil tam olarak. Dediğiniz değerin yer kaplaması dışında bi eksisi olacağını sanmıyorum. İd değerini uniqe olarak kullanmak ana amaç. Farklı bir fieldıda uniqe yapıp id gibi kullanabilirsiniz. Mesela wp de url yapısıda uniqe dir. Orada kalıcı bağlantı db de aratılıp getirilir. Bağlantı yapısını değiştirdiğinizde ona göre fieldlarda arar. Aynı zamanda 1. Sorunuzunda açıklaması.


Üstadım aydınlatıcı oldu gerçekten, çok teşekkür ederim.

1) field => terimi, sütun kavramına mı tekabül ediyor?

2) "Mesela wp de url yapısıda uniqe dir. Orada kalıcı bağlantı db de aratılıp getirilir. Bağlantı yapısını değiştirdiğinizde ona göre fieldlarda arar. Aynı zamanda 1. Sorunuzunda açıklaması."

"Sonuçta eşsiz bir değer lazım."

Bu 2 ifadenizin toplamından;

1 adet unique/benzersiz değerimiz olsun gerisi teferruat.
O değeri referans alarak/merkeze koyarak veri tablosuna ulaşırız ve diğer tüm verilere erişiriz...

Bu değerin; ai/sayısal/numeric/alfabetic/string/date/...vs olması tercih konusudur sadece...


Bu iki cümlelik özeti çıkarmak doğru olur mu üstadım?

VE bir de kayıt tarihini stringe çevirsek unique ve güzel bir referans değeri olur diye düşünüyorum, bu konudaki fikrinizi de öğrenmek isterim mümkünse...
 

 

ÖNCE "İYİ,DOĞRU,GÜZEL BİR İNSAN" OLMAK (VEFA,TEVAZZU,NAİFLİK,SAYGI,...) GEREK!
Sonra wm oluruz.
wmaraci
wmaraci

BEYAZMASTER BEYAZMASTER YÜCE ALLAH'IN aciz 1 kulu Kullanıcı
  • Üyelik 04.02.2020
  • Yaş/Cinsiyet 43 / E
  • Meslek Yazılım...
  • Konum Diğer
  • Ad Soyad O** B**
  • Mesajlar 597
  • Beğeniler 154 / 153
  • Ticaret 0, (%0)
halukku Üstadım katkınız için teşekkür ederim öncelikle.

Güvenlik kaygısı en iyi yöntemlere ulaşana kadar var olacak elbette...

"Mesela id görülen yerlerde id yi bir anahtar ile kriptolayabilirsin. sunucu taraflı yazılımında aynı anahtar ile id nin kriptosunu çözüp kullanabilirsin. hatta daha karmaşık olmasını istiyorsanız sağına ve soluna belli karakterler ile sınırlayan random sayılar ekleyerek uzatabilirsin. bu şekilde sürekli değişen ve karmaşık karakterlerden oluşan bir id ile çalışmış olursunuz"

Bu yöntemi ve varsa diğer yöntemleri de örneklendirebilir misiniz bizler için mümkünse...

Her halikarda tekrar teşekkür ederim...
 

 

ÖNCE "İYİ,DOĞRU,GÜZEL BİR İNSAN" OLMAK (VEFA,TEVAZZU,NAİFLİK,SAYGI,...) GEREK!
Sonra wm oluruz.

halukku halukku WM Aracı Kullanıcı
  • Üyelik 16.03.2016
  • Yaş/Cinsiyet 38 / E
  • Meslek Yazılım
  • Konum İstanbul Avrupa
  • Ad Soyad H** K**
  • Mesajlar 74
  • Beğeniler 15 / 32
  • Ticaret 4, (%100)
Bu yöntemi ve varsa diğer yöntemleri de örneklendirebilir misiniz bizler için mümkünse...

https://github.com/halukkus/base64sezar-php
BEYAZMASTER

kişi bu mesajı beğendi.

VipTema VipTema Vip Tema Web Tasarım Kullanıcı
  • Üyelik 29.06.2011
  • Yaş/Cinsiyet 37 / E
  • Meslek Vip Tema Web Tasarım A.Ş.
  • Konum Tekirdağ
  • Ad Soyad Ö** I**
  • Mesajlar 1393
  • Beğeniler 704 / 703
  • Ticaret 21, (%100)
Veritabanında id kimlik numarası gibi düşünülebilir, haliyle benzersiz olmalıdır auto increment olabiliyor olması büyük kolaylık. Tablolarda hemen hemen hepsinde id kullanılmasının bir diğer nedeni de daha sonra diğer tablolarla iliskilendirilmesidir. Örneğin bir bloglar tablosunun ilgili yorumlar tablosuyla eslestirken id lerden faydalanılması. Bu sebeple silinen id leri tekrar kullanmak yaptığın iliskilendirmelerden dolayı karmaşa yaratacaktır. Aynı şekilde hali hazırda bulunan verilere seri bir id atamak, iliskili tabloların seknkronizasyonun kopması demek. Yinede son kullaniciya projeni teslim ederken eğer veritabanin tamamen boş ise, id leri 1 den başlatmak isteyebilirsin.

ALTER TABLE tablename AUTO_INCREMENT = 1

Güvenlik amaçlı idleri sifrelemek istiyorsanda bunu veritabanında yine orjinalini koruyarak yapmalisin.

Örneğin şu yapıda;
siteadi.com?sil=1
yerine 1'in kriptolu karşılığı sukrutt68yree4Dgjjk olsun.
siteadi.com?sil=sukrutt68yree4Dgjjk
gibi kullanmak mantıklı gelebilir. Siradaki id tahmin edilemez bu şekilde. Bunu da geri döndürülebilir şifreleme yöntemleriyle yapabilirsin.

Veri tabanında önemli verilerini kriptolu tutabilirsin örneğin Tc, email, şifre, adres, kredi kartı bilgisi gibi ama kimse id, ad soyad gibi bilgileri kriptolu tutmaz yapılamadığı için veya zor olduğundan değil. Kriptolu tuttuğun zaman verinin boyutu büyür. Fazla yer kaplar. Çağrıldığında hızına etki eder vs. Veritabanı optimizasyonu, ilişkilendirme gibi durumları araştırdığında neden böyle olduğunu daha iyi anlarsın.

İd sifrelemektense yazılım içinde önlemler almalısın mesela silme işlemi için ilk akla gelenler
Bu işlemi sadece login olmuş kisiler yapsın
Bu kisinin buna yetkisi varsa yapsın
Referrer olarak sadece benim sitem üzerinden istek gönderiyorsa yapsın
Post veya get ettigi veriler filtremden başarıyla geçtiyse yapsın.
Cors uyarısı almazsa yapsın
2FA dogrulamani gectiyse yapsın
......
...
Bu çoğaltılabilir uzar gider. Yaptığın işe göre önlemler de değişkenlik gösterebilir. İşin bu tarafına yoğunlaşırsan id nin görünmesi problem bile olmayabilir.
BEYAZMASTER

kişi bu mesajı beğendi.

BEYAZMASTER BEYAZMASTER YÜCE ALLAH'IN aciz 1 kulu Kullanıcı
  • Üyelik 04.02.2020
  • Yaş/Cinsiyet 43 / E
  • Meslek Yazılım...
  • Konum Diğer
  • Ad Soyad O** B**
  • Mesajlar 597
  • Beğeniler 154 / 153
  • Ticaret 0, (%0)
Okan_IŞIK Üstadım bu çok detaylı, aydınlatıcı, yol gösterici bir katkı oldu.

Ayırdığınız vakit ve emeğiniz için çok teşekkür ederim paylaştığınız bilgilerden istifade edecek herkes adına.

"diğer tablolarla iliskilendirilmesi"
Konusunda 100% haklısınız, çok hayati bir konu (o tür durumlarda) kesinlikle id değerine dokunmamak gerekir.

Ben bu durum dışında da pek dokunma taraftarı değilim ama nasıl yapıldığını bilmekte fayda var elbette.

Veritabanı tamamen boş ise => ALTER TABLE tablename AUTO_INCREMENT = 1 (Haklısınız, denemiştim daha önce...)
(Mevcut id'leri yeniden numaralandırmanın yöntemlerini de öğrenmek istemiştim.)


"Güvenlik amaçlı idleri sifrelemek => bunu veritabanında yine orjinalini koruyarak yapmak"
İşte bunu öğrenmem gerek üstadım, bu oldukça önemli. (Sadece id için değil.)

Şu anda sadece şifreleri kriptoluyorum, yer kaplıyor haklısınız.

Güvenlik önerileriniz çok faydalı oldu...
Sondan 4. aklıma gelmemişti.
Sondan 3. uzun zamandır öğrenmek istediğim bir başlık, sıra gelmedi.
Son 2 kavramı ilk kez şimdi sayenizde duydum/okudum => öğrenmem gerek...

Kesinlikle işin GÜVENLİK tarafına yoğunlaşacağım...

TEKRAR ÇOK TEŞEKKÜR EDERİM...
VipTema

kişi bu mesajı beğendi.

ÖNCE "İYİ,DOĞRU,GÜZEL BİR İNSAN" OLMAK (VEFA,TEVAZZU,NAİFLİK,SAYGI,...) GEREK!
Sonra wm oluruz.

BEYAZMASTER BEYAZMASTER YÜCE ALLAH'IN aciz 1 kulu Kullanıcı
  • Üyelik 04.02.2020
  • Yaş/Cinsiyet 43 / E
  • Meslek Yazılım...
  • Konum Diğer
  • Ad Soyad O** B**
  • Mesajlar 597
  • Beğeniler 154 / 153
  • Ticaret 0, (%0)


Üstadım baktım ve kaydettim, üzerinde çalışıp denemeler yapacağım fırsat bulunca...

Çok çok teşekkürler...
VipTema

kişi bu mesajı beğendi.

ÖNCE "İYİ,DOĞRU,GÜZEL BİR İNSAN" OLMAK (VEFA,TEVAZZU,NAİFLİK,SAYGI,...) GEREK!
Sonra wm oluruz.

AzveNet AzveNet WM Aracı Kullanıcı
  • Üyelik 13.06.2019
  • Yaş/Cinsiyet 43 / E
  • Meslek Serbest
  • Konum İstanbul Anadolu
  • Ad Soyad C** E**
  • Mesajlar 367
  • Beğeniler 69 / 147
  • Ticaret 0, (%0)
Yalnız decripto edilebilir(tarafınızdan) herşey herkes tarafındanda edilebilir olur. İd dışında bağlantı yapısında kullanmak istiyorsanız eğer bir sütun daha açıp orayada random uniqe değer verip onu bağlantıda kullanabilirsiniz. İnstagramın falan yaptığı bağlantı yapısı. Yani aunı şey rakamlada yapılır ama alfanumerik daha hoş durur :)
Okan arkadaşında dediği gibi idleri rakam olarak kullanmak boyut tasarrufu sağlar. Ancak ilişkilendirmede bir alakası yoktur. Kolaylıkta sağlamaz. O kolaylıpı sağlayan eşsiz bir değerle ilişkilendirmektir. Ancak diğer tüm söyledikleride mantıklı ve makul. Gerçi ilişkilendirmeyle ilgili olarak söylemk istediğide sanırım zaten boyut büyümesi. İdi ai kullandığınızda bir faydasıda mysql de istediğinizi sıralama şeklinde daha kolay bulmanız(phpmyadmin). Aynı şeyi tabii arayarakta bulabilirsiniz ama bazen sıralı olarak bir kaç kaydı bulamakta ide göre listelemek daha basit olur. Siz yinede id kullanın. Okan arkadaşın dediği gibi güvenliği sağlayın gerisi önemli değildir pek.
BEYAZMASTER

kişi bu mesajı beğendi.

İmkansız olduğunu düşünürsen hiç birşey başaramazsın.
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al