Hackerrank gibi siteler nasil calisir?

Herkese merhaba ben hackerrank gibi ama daha basit bir site yazmayi dusunuyorum ama bazi kisimlari kafamda bir turlu oturtamadim kodunu denemek isteyen insan zararli bir kod yazarsa onu serverde calismasini nasil engelellerim? yani nereden anlaya bilirim kodu denemek isteyen yalnis kodlar girmismi?

Bu konu hakkinda bir bilgisi olan yokmu?

Merhaba. Elimizde düzgün bir zararlı kod tanımı olsa bile bir kodu çalıştırıp sonucunu beklemeden bu zararlı işlemlere yeltenip yeltenmeyeceğini bilmek her zaman mümkün değil, hatta bu problem halting problem ile eş değerdir diye tahmin ediyorum. Eğer kod analizi yapılmaya çalışılırsa her farklı dil için ayrı ayrı uğraşılması gerektiği de göz önünde bulundurulduğunda bu tehlikeli olabilecek işlemleri güvenli sandbox’larda veya container’larda çalıştırmak lazım.

3 Beğeni

Cok guzel bir tespit. Hatta en basit zararli kodun sonsuz dongu oldugunu dusunursek, birebir ayni problem.

Fakat bunun temeli olan Gödel’in bütünsüzlük (sanirim, Turkcesi) teoremine inersek ufak bir kacis noktamiz var: Bu teorem/problem, yeterince karmasik sistemler icin gecerli. Turing Makinasinin altina indigimizde, mesela loop’lari kaldirdigimizda veya sonsuz olmayan bir sayiyla sinirlandirdigimizda ortadan kalkiyor.

Pratige/elimizdeki probleme donersek, mesela belli sistem cagrilarini asla yapmayan bir dilin sistem acisindan guvenliligini garanti edebiliriz. Sonsuz CPU/hafiza kullanimini kernel’den kisitlayabilir, veya bir watchdog yardimiyla kontrolden cikmasini engelleyebiliriz. Sorun, butun bu kisitlamalara sahip bir dil Python dili olmaktan cikar.

Yani meselenin olasi cozumu kotu niyetli programlari blacklist ile kisitlama degil, sadece iyi niyetli programlara yol acacak whitelisted yapi taslari sunmak.

Veya emulasyon/sandboxing, tabi ki.


Yukaridaki konular ilgi cekiyorsa Douglas Hofstadter’in Gödel, Escher, Bach: An Eternal Golden Braid adli kitabini siddetle tavsiye ederim. Yeterli bilgisayar bilimi arkaplanina veya ilgisine sahip olup bu kitabi okumamak buyuk bir firsat kaybi, kanimca.

4 Beğeni

@EkremDincel dediği gibi sınırlı ortamlarda çalıştırılıyordur, bir de çalıştırmadan önce de eleme yapabilrisin. Zaten bu sitelerde senden bir fonksiyonun içini doldurmanı istiyorlar, regex kuralları ile kullanılmasını istemediğin kütüphaneleri belirleyebilrisin, veya belli bir süre çalıştıktan sonra işlemi sonlandırabilirsin.

evet haklisiniz ama bazi sitelerde beli bir kod yazmaya mecbur etmiyor direk kodun sonucuyla ilgileniyor func ilede yazarsan sonuc dogruysa dogru func olmandada dogruysa dogru kabul ediyor yani direk programin sonucuna odakli calisiyor