• 22-09-2021, 21:46:19
    #1
    Selamlar.

    Web tarafında amatör olduğumu belirtmek isterim öncelikle.

    PHP ve PDO kullanarak bir script tasarlıyorum ve sormam gereken birkaç soru var.

    - Güvenli bir login sistemi nasıl yapabilirim? Normalde session'da tutuyorum kullanıcı bilgisini ama şöyle bir şey var; örneğin ben admin olarak SQL'den ilgili kişinin adını değiştirdiğimde haliyle session'a bu bilgi yansımıyor. Bunun önüne nasıl geçerim? Önerebileceğiniz açık kaynak bir GitHub projesi vesaire var mıdır?

    - POST işlemleri için session'daki user_role bilgisine göre işlem yaptırıyorum. Örneğin user_role 0 ise post işlemini gerçekleştir gibi. Bu gibi istekler güvenli midir? Ekstra bir önlem almak gerekir mi token vesaire?

    İşimi kolaylaştıracak her türlü öneriye açığım arkadaşlar. Mesela DB için kullandığım küçük bi wrapper: https://github.com/wickyaswal/php-my...database-class

    Herkese önerileri için şimdiden teşekkürler.
  • 22-09-2021, 21:50:58
    #2
    kullanıcı adı gibi bilgileri sessionda tutmak yerine header de bunları değişken olarak alabilirsiniz. Böylelikle sqlden değiştinde kullanıcıya anında yansar
  • 22-09-2021, 22:01:18
    #3
    Merhaba,

    > Normalde session'da tutuyorum kullanıcı bilgisini ama şöyle bir şey var; örneğin ben admin olarak SQL'den ilgili kişinin adını değiştirdiğimde haliyle session'a bu bilgi yansımıyor. Bunun önüne nasıl geçerim?
    SESSION alınan ve mevcut kullanıcı adını karşılaştırabilirsiniz login kontrol kodlarının olduğu kısımda, kullanıcı adı değişirse üye tekrar girişe yönlendirilir.

    > POST işlemleri için session'daki user_role bilgisine göre işlem yaptırıyorum. Örneğin user_role 0 ise post işlemini gerçekleştir gibi. Bu gibi istekler güvenli midir? Ekstra bir önlem almak gerekir mi token vesaire?

    POST etmelerini engellemek yerine direkt olarak o sayfaya girişlerini engelleyin ve üyeleri farklı sayfalara yönlendirin, bu şekilde daha güvenli olacaktır. Ek olarak user_role kontrolünü session'a göre değil veritabanında ki değişkene göre kontrol ettirin.

    htmlspecialchars filterisini kullanmayı ve SQL injection'a karşı önlemlerinizi almayı unutmayın, PHP çok geniş bir kütüphanedir github dışında; google'da araştırarak bir çok kaynak bulabilirsiniz.

    İyi çalışmalar.
  • 22-09-2021, 22:46:54
    #4
    Sql den kullanıcı adını değiştirmekten kastınız doğrudan veritabanın'dan (phpmyadmin vs.) değiştirmekse yansımaması normal. Fakat php tarafında bir değişiklik söz konusu ise değişikliği yapınca session bilgisini güncellerseniz değişiklik genele etki eder. Session'da hassas bilgiler var ise session verilerini şifreleyebilirsiniz. Güvenlik konusun'da ise google'da php güvenlik diye arattığınız zaman bir sürü kaynak mevcut. Ayrıca ingilizce olarak aratırsanız daha fazla kaynak bulabilirsiniz.
  • 23-09-2021, 00:08:38
    #5
    Yaptığım stres testlerinde, teknik düzeydeki Auth sorunları büyük ölçüde API ve GCaptcha v3 ile tamamen ortadan kalkmış görünüyor. Birini aşsanız, diğeri aşılmıyor.
    Hatta Ajax veya JQuery ile voltran yaptıklarında yöntemler de inanılmaz zorlaşıyor, güvenlik koridorunda neler yapıldığını anlamak baş ağrıtıyor.
    Server side - front end uygulamaları bunca teknolojik gelişim göstermişken, siz neden rest API yazmıyorsunuz?


    Zira session bilgisine ulaşan geri kalan tüm yetkilere ulaşır. (gerçi api token'ina ulaşan da ulaşabiliyor ama. en azından refresh time özelliği var )
  • 23-09-2021, 16:47:06
    #6
    mkozdogan adlı üyeden alıntı: mesajı görüntüle
    ...........
    Zira session bilgisine ulaşan geri kalan tüm yetkilere ulaşır.
    ..... )
    client, serverdaki session bilgisine nasıl ulaşır?
    +session kullanarak geri kalan tüm yetkilere nasıl ulaşır?
  • 23-09-2021, 17:19:03
    #7
    trgino adlı üyeden alıntı: mesajı görüntüle
    client, serverdaki session bilgisine nasıl ulaşır?
    +session kullanarak geri kalan tüm yetkilere nasıl ulaşır?
    Biraz fazla sallamış gibi
  • 23-09-2021, 22:27:23
    #8
    ntka adlı üyeden alıntı: mesajı görüntüle
    Biraz fazla sallamış gibi
    PhpSessionID ne demek bilmiyorsunuz sanırım? Halbuki ben sadece basit bir varsayım yazmıştım. Biraz daha açalım.
    Bir kullanıcı, diğer bir kullanıcının “PHPSESSID” değerini biliyorsa o halde, o kişinin oturumunu da bilmiş olur. Yani X kişisi kendi tarayıcısında Y kişisinin “PHPSESSID” değerini girer ve o kişinin oturumuna giriş sağlamış olur.

    Örnek video


    Dileyen internette açık kaynaklarda phpsessionid güvenliği hakkında detaylı bilgiler okuyabilir.
    Phpsessionid için iyi kurgulanmamış bir güvenlik senaryosunda, bu bilginizi elde eden birisi bilgiyi javascript ile taçlandırırsa, o halde bu olay benim bahsettiğimden de büyük bir güvenlik açığına dönüşür.
  • 24-09-2021, 08:48:13
    #9
    matematiği daha iyi olan biri hesaplamasını daha iyi yapabilir.
    default 22 haneli session id yi dışarıdan birinin bulma ihtimali 22! de 1 ( ! = faktöriyel )
    sonucu da 21 haneli bir rakam çıkar. 1 küsür sekztilyon gibi birşey
    yine default ta 7200 saniye olan session süresince bu denemeleri yapıp o session id yi bulabiliyorsanız, bravo.
    devede kulak hatta tırnak bile olamayacak şeylere takılmayın, gerek yok.
    hadi diyelim ki yönetici sesson id sini buldunuz diyelim,
    bu girdiğiniz session da login olunan ip bilgisinin session da kayıtlı olmaması/kontrol edilmemesi ve diğer yerden normal giriş yapanın logout/session destroy yapmaması gerekir.
    kolaylıklar bol bol şanslar