Sayfalar

Translate Blog

21 Mart 2022 Pazartesi

Google ile Web Sayfalarına Giriş Yapmanın Tehlikeleri / Dangerous Side of Sign In With Google

Uzun zamandan beri birçok web sayfasına google butonları ile giriş yapıyorum. İlk kez kendi sayfama bu özelliği kazandırmak istedim. 2023'ten itibaren oAuth2 ismini verdikleri sistemi kapatıp yerine Google Credental sistemine geçiş yapmışlar. İşi biliyorsanız bir kaç uğraş ile sitenize ekleyebiliyorsunuz. Gerçi dökümanları eksik biraz.


Kolaylıklarının Yanında Teklikeleri Var

Kendi bilgisayarınızda hesaplarınınz sürekli açıktır ve bir siteye kaydolmamak için yana yakıla google butonu ararsınız varsa çok mutlu olursunuz. Fakat bu apinin kullanımında çok tehlikeli bir sorunu tespit ettik. Siz bir A sitesine google butonu ile giriş yaptığınız zaman o tarayıcıda artık gmail ve benzeri tüm google uygulamalarına da giriş yapmış oluyorsunuz. A sitesinden çıkış yaptınız diyelim ne yazikki google hesabınız o tarayıcıda halen daha açık kalıyor. Tamam kalsın diyorsunuz, fakat...

En Tehlikeli Senaryo

Başka birine ait veya internet kafedeki bir bilgisayardasınız. A sitesine google butonu ile giriş yaptınız. İşiniz bitti çıkış yaptınız ve masadan kalkıp gittiniz. Başka birisi aynı bilgisayar tarayıcı ile epostasına bakmak istedi ve gmail.com adresine girdi. Göreceği ilk  şey giriş yapılmış bir gmail eposta hesabı olacak. Hemde size ait gmail hesabı. Kötü niyetli birisi ise geçmişiniz, bilgileriniz, gmail ile bağlı olan uygulamalarınız (facebook, twitter, instagram vb...) hepsi çalınır.

Ne Yapmalısınız?

Bir geliştirici olarak google hesaplarından çıkış yaptırmanın bir yolu olmadığını araştırarak gördük. Hiçbir Google Api'si logout yaptıramıyor veya yaptırmıyor. Bunun temel nedeni kullanıcılar bir kere giriş yaptığından sürekli onlardan veri almaya devam etmek istemesi.

Peki kullanıcı olarak ne yapmalısınız:

  • Halka açık bir yerde google ile bağlan düğmelerini kullandıysanız muhakkak gmail.com sitesine girerek çıkış yapınız.
  • Veya "https://www.google.com/accounts/Logout" bu adresi ziyaret ederek tarayıcıdaki google hesabınızı kapatın.
Geliştirici iseniz ne yapmalısınız:
  1. Öncelikle google'a bu yöntemin yanlış olduğunu bildiren bir metin yazmalısınız.
  2. İkinci olarak Sign In With Google ile giriş yaptırıyorsanız kullanıcıya bu durumu bildirecek bir arayüz hazırlamalısınız.
  3. Çıkış butonlarınız iki özelliği de kapsamalı
    1. Google hesabım açık kalsın sadece siteden çıkış yap
    2. Hem siteden hem de google hesabımdan çıkış yap
  4. İki hesabı birden kapatmak için web sitenizdeki sessionları temizledikten sonra "https://www.google.com/accounts/Logout" adresine siteyi otomatik yönlendirin. Böylelikle google hesabı da kapanmış olacaktır.

13 Aralık 2021 Pazartesi

En Kısa Yol Algoritması - Dijkstra

Dijkstra Algoritması

 En kısa yol algoritması yani Dijkstra algoritması için javascript uygulamasına aşağıdan erişebilirsiniz.  Algoritma bu sayfadan uyarlanmıştır.




iki nokta arasındaki en hafif/kısa yolu hesaplar. Hesaplanabilmesi için noktalar arası ağırlık veya mesafelerin bilinmesi gereklidir. Bir başlangıç noktası seçin ve Kısa Yolu Çiz butonuna basın. Sonuç başlangıç noktasından başlayan ve en alt sağ köşeye giden, toplamları en küçük olan yolu vermektedir.

Calculates the lightest/short path between two points. In order to be calculated, it is necessary to know the weights or distances between the points. Select a starting point and press the Draw Shortcut button. The result gives the path with the smallest sum starting from the starting point and going to the lower right corner.



En kısa yol algoritması hakkında detaylı bilgiyi aşağıdaki videodan izleyebilirsiniz.

24 Nisan 2021 Cumartesi

CMD ile Arduino Uno'ya Komut Gönderme - Arduino Serial İletişimi

Arduino COM3 portunu kullandığını varsayalım. Arduinonun 2 numaralı pinine bir led bağladık. CMD ile onu açıp kapatalım. İlk kod arduinonu scripti. Yüklemesini yapalım.

#define BAUD_RATE 115200

int led = 2; // board üzerindeki standart led ile deneme ypamak için 2 yerine bunu yazın LED_BUILTIN

void setup(){

  pinMode(led, OUTPUT);

  Serial.begin(BAUD_RATE);

};

void loop(){

  if(Serial.available() > 0){

    //int i = Serial.read() - '0'; //sadece sayı almak isterseniz

    //char z = Serial.read(); //tek karakter almak isterseniz

    String z = Serial.readString(); //string almak isterseniz

    delay(100);

    if(z == "11"){

      digitalWrite(led, HIGH); 

    }else if(z == "12"){

       digitalWrite(led, LOW); 

    } 

  }

};


Şimdi başlata tıklayın ve cmd yazıp enterlayın. Aşağıdaki MODE ile başlayan kod COM3 portunun ayarlarını yapıyor. BAUD değeri arduino kodunda da var. İkisi aynı olmalı 9600 görebilirsiniz bir çok kodda. Ona göre düzeltin. Normalde arduino her comport iletişiminde reset atar. Bunu kapatmak için dtr=off komutu eklenmiştir. Böylelikle arduino seri port iletişimi yaparken kendini resetlemeyecek.

MODE COM3: BAUD=115200 DATA=8 STOP=1 PARITY=N dtr=off

Son olarak veriyi göndermeye geldi sıra. Arduino kodunda 11 iken ışığı AÇ 12 iken KAPAT kodu yazmışız. Aşağıdaki gibi yazarak 11 stringini port üzerinden gönderiyoruz ışık açılıyor, 12 gönderiyoruz kapatıyor. String komut aldığımız için istediğinizi yazabilirsiniz.

set /p x="11" <nul > COM3