Adam programcı en kötü programlama uygulamalarını kullandı


37

Söylemesi garip görünüyor, ama işte çalışan bir programcı kasıtlı olarak birkaç kötü programlama uygulamasını bilerek kullandı! Açıklayacağım. Öncelikle onun akıllı bir adam olduğunu ve çoğu zaman anlaşılır kod yazdığını söylememe izin verin.

Lisanslama işlemini, Java ile yazılmış bir web uygulama projesine uygulaması istendi. Java olduğu için, eğer biri gerçekten istenirse, muhtemelen muhtemelen kavanozları kırabilir ve içine yazılmış sınıfların ve yöntemlerin adlarını okuyabilir. Bu soruna verdiği çözüm, kelimenin tam anlamıyla garip bir şekilde değişkenleri ve yöntemleri belirgin olmayan adlara göre çağırmak ve bunları yeni sınıflar oluşturmaktan ziyade sıkışık sınıflara yerleştirmekti.

Gerekçesi, bir bilgisayar korsanının lisans kontrollerini atlamak (ve dolayısıyla ürünün ücretsiz bir kopyasını almak) için bazı sınıfları değiştirmek istemesi durumunda, hangi yöntemlerin açık olmadığı ortaya çıkması durumunda çok daha zor zamanlar geçirmesiydi. bu belirli görevleri yerine getirmek. Ancak bunu yaptıktan sonra, onunla yüzleşerek iyi programlama uygulamalarını sürdürürken, bizim için yapmak için bir çeşit obfuscator kütüphanesi alabileceğimizi önerdim. Bu tür bir çözüm aramak için zamana veya kaynağa sahip olmadığını iddia ediyor.

..Hangi beni ikilemde bırakıyor? Java'da bir obfuscator kütüphanesi arar mıyım ve eski kodunu düzeltiyor muyum (kodunu yeniden düzenlemesi konusunda biraz dokunaklı olabilir), yoksa bitmeyen bir şey değil mi?


4
Sorunuz bu durumun politikasını nasıl ele alacağınızla ilgiliyse, buradaki cevapların birçoğu doğru yöne işaret ediyor, ancak sizin bir yorumunuz varsa, gerçekten önermek için daha iyi bir alternatif isteyip istemediğinizi kontrol etmek isteyebilirsiniz. Bu soruya verilen yanıtları tükendi: stackoverflow.com/questions/6018215/…
Mark Booth

8
Temiz kaynak kodunuza erişimi olan bir bilgisayar korsanı, kimlik doğrulama işleminizi hackleyebiliyorsa, bilgisayar korsanlığı süresidir. Hiçbir şaşırtma yardımcı olmaz. Bazı bilgisayar korsanlarını durduran bir çözümün peşindeyseniz, şaşırtmaca üzerine, bazı yanlış yönlendirme uygulamalarını da kullanmak isteyebilirsiniz (olasılıkla değiştirilemeyen sınıflardaki şeyleri gizleyin). Kimlik doğrulama uygulamanızı tamamen değiştiren sık güncellemeler de yardımcı olur. Birçok kullanıcı bilgisayar korsanlarına güvenmekten bıktı ve sadece satın aldı.
Bill K,

2
Yerli isimlerini mi değiştirdi? Öyleyse, zamanını boşa harcıyor - derlenmiş kodda zaten adlandırılmış değişkenler olarak mevcut değiller.
Nick Johnson,

1
Buna "şaşırtma" denir ve bugünlerde daha sık kullanılmasına rağmen, tam kanıtı yoktur! .. birisinin kodu kırmasını geciktirmesine rağmen, kırılabilir! .. görmek istediğim bir derleyicidir Bu, nesne kodunu şifreleyebilir ve yalnızca doğru anahtarla çalıştırılabilir; böylece bir disk editörü, sökme aleti veya başka herhangi bir çatlama aracı olan biri bile asla kafa veya yazı yazamaz!
Frank R.

6
“Bu soruna verdiği çözüm, kelimenin tam anlamıyla garip bir şekilde değişkenleri ve yöntemleri belirgin olmayan adlara göre çağırmak ve onları yeni sınıflar oluşturmaktan ziyade sıkışık sınıflara yerleştirmekti.” ve "İlk önce zeki biri olduğunu söyleyeyim" aynı paragrafta iyi gitmiyor!
yutulmuş elysium,

Yanıtlar:


94

Şaşırtma yoluyla güvenlik asla iyi bir güvenlik değildir. Fikri mülkiyet haklarınızı korumanın daha iyi yolları olmalı. Ve bu sizin ve meslektaşınızın yöneticinizle ortak bir endişe kaynağı olarak ortaya çıkarması gereken şeydir. Eğer yönetim o zaman güvenliği arttırmak için zaman veya para harcamak istemediklerine karar verirse, o zaman ikinizin de bu kararla yaşamak zorunda kalacaksınız (ürün sizin değil, şirketin ürünü) ve daha iyi harcamanız gerekmeyecek (atık?) konuyla ilgili daha fazla zaman.


31
+1 Şaşırtma güvenlik değil, sadece konforlu bir battaniyedir.
uɐɪ

7
Eğer şaşkınlıktan daha iyi bir çözüm bulabilirseniz, cevabınızı doğru cevap olarak işaretleyeceğim. Savaş dosyasına erişimi olan birinin, en azından hangi lisanslar için endişeleniyorsa işlevselliğini değiştiremeyeceğini nasıl garanti edebilirsiniz?
Neil,

5
Birisi dosyalara eriştiğinde bunu hiçbir zaman garanti edemezsiniz. Ancak gerçek şu ki: En basit mekanizma, kullanıcıların% 99,99'unun yazılımınıza zarar vermesini önler. Özel ve yetenekli bir bilgisayar korsanı, HER ZAMAN uygulama güvenliğini atlamanın bir yolunu bulur. Bununla birlikte, uzaktan doğrulamaya geçebilirsiniz, böylece programınız yalnızca sizin hizmetinize karşı kimliği doğrulandığında çalışır. Bunun güvenli olması için, tüm programınızı şifrelemeniz ve bir tür önyükleyiciniz olması gerekir. AMA: eğer birinin geçerli bir anahtarı varsa, yine de yazılımı tekrar tersine çevirebilir.
Şahin,

7
@Neil: Çekirdek iş mantığını bir USB dongle olarak eklenmiş bir mikro denetleyicide uygulayın. Uygulamanın ucuz ya da kolay olması gerektiğini söylemediniz;)
SF.

8
@SF. Touche. Sadece cehennem için aynı anda bağlantı kurmak için üç uyduya ihtiyaç duyması gerektiğini düşünüyorum. ;)
Neil

84

Orijinal: Patronun ne diyor? Öğrenin - bunu yapın.


Yukarıdakileri detaylandırmam istendi:

Her şeyden önce, birden fazla ikileminiz olduğunu düşünüyorum:

  • Başka bir kişinin kodunu "düzeltmelisiniz" mi?
  • Diğer kişilerin uygulaması (buradan A) başka bir şeyle değiştirilmesi gereken kadar kötü mü?
  • Bir "obfuscator (bundan B) bu" uygulamamıza gömülü lisanslama "için daha iyi olur mu?

Her şeyden önce, sorunun bir iş vakası görüldüğü IS çözüldü. A yerinde ve - büyük olasılıkla - sorun için "yeterince iyi" bir çözüm. Şirketiniz, temelde adil bir şekilde, sadece onu kırmak için kasıtlı bir çaba sarf etmenin yeterli olduğu şekilde korunmasından memnun olabilir.

Bu, hoşunuza gitmese bile (ve bana güveniyorsanız, kariyerinizle daha kötü bir şekilde göreceksiniz ), gerekenleri yaptığı anlamına gelir. Bu nedenle, sorun çözüldüğü için, "sadece yapmayın" değil, çalışmanızı uzun vadede görevlendirmekten sorumlu olan kişiyi ikna etmelisiniz.Bu uygulamanın fiyatı, geri dönüşü garantilemek ve bir hisse senedi belirleyici seçmek için yeterince yüksek olacaktır. Bu, sizden oldukça fazla hazırlık gerektirecektir ve ayrıca, şaşırtmacıların bilmeniz gereken dezavantajlara sahip olduğunu da unutmayın (diğer cevaplar bunu iyi anlar). Örneğin yığın izleri derhal kullanılamaz, vb. Korsanlıktan kaçınmanın ne kadar önemli olduğuna bağlı. En zor kırılmanın, donanım kilitlerinin çalışmasını gerektiren ve müşterilerinizin isteyeceğinden daha pahalı olduğunu unutmayın.

Bu nedenle, şirketinizin B'ye gitmek için ek kaynaklar kullanması gerektiğinden bu kararı vermek sizin kararınız değildir. Bu nedenle endişelerinizi sorumlu kişiye bildirmeniz, bunu ve diğer uzun vadeli endişeleri nedenini anlaması için yeterince iyi bir şekilde açıklamanız gerekir. Önerinize göre daha düşük olduğunu düşünüyorsunuz. Öyleyse kararını vermesine izin verin ve ne olduğu fark etmeksizin, ona saygı gösterin ve profesyonelce davranın. Asıl yazarın, yazdığı gibi yine de sürdürmesi gerekeceğini ve eğer ayrılırsa veya artık istemiyorsa, konuyu tekrar gündeme getirebileceğinizi unutmayın.

Başka bir deyişle: Patronun ne diyor? Öğrenin - bunu yapın.

Ayrıca, sorunu daha önce dile getirdiyseniz, A'yı uygulamak için harcanan zamanın boşa harcanan parasının daha küçük olması için bunun farklı olacağını unutmayın. Başka bir deyişle, A ile B arasında seçim yapıldığında.

Son olarak, "sadece diğer insanların kodlarını düzeltmek" hakkındaki sorunuzu yorumlamak istiyorum. Bu, mevcut kod için küçük bir düzeltme değildir (özellikle yerinde testler yaparak iyi ve cesaretli buluyorum). Yıkıcı bir geri alma ve yeniden uygulamadır ve ortak kod sahipliğine sahip ekiplerde bile, bu önceden kabul edilmeksizin yapılacak en azından benim için kabul edilebilir bir şey olmaz.

Umarım bu benim bakış açımı netleştirir.


8
Patronum programcı değil ve nihayetinde programın davranışını hiçbir şekilde değiştirmeyecek bir şeyi yapmak için neden zaman ve para harcamamız gerektiğini açıklamakta zorlanıyorum.
Neil,

15
@Neil: ... belki de patronunuza "bakım masrafları" kavramını tanıtmanın zamanı gelmiştir?
SF.

21
Bu, iş arkadaşları veya çalışma ortamı ile ilgili her soruya varsayılan cevap olacak mı? Bazı nubların gidip bunu bir cevap olarak göndermeni söylemesi gerektiğini biliyorum, ama hadi, bu bir cevap değil . Bu aslında yarı-terbiyeli (beceriksizce ifade edilmiş olsa da) belirsiz bir sorundur; bu "cevap" hakarettir.
Aarona

8
@Aaronaught. Bu cevap, "uygulama A kötü, uygulama B'yi yapmamızı öneriyorum" olduğunda kemiği keser çünkü ek iş (paraya eşit) yapılması gerekir. A veya B'nin uygulanması arasında bir seçim olsaydı, cevap farklı olurdu. Daha ayrıntılı bir cevap istiyorsanız, meta ile ilgili bir soru açmanızı öneririm.

22
“Bu, iş arkadaşları veya iş ortamı hakkındaki her bir sorunun varsayılan cevabı olacak mı?” Neden olmasın? Bu teknik bir soru olarak ifade edilmişse .eg "Hangisi daha iyi otomatik kandırmaca v'in eli kodlanmış (= kötü uygulama) kandırmaca" ise o zaman bu tamamen farklı bir sorudur ve teknik bir tartışma gerektirir. "İş arkadaşlarımın arkasından bunu düzeltmeli miyim?" soruları sonuçta "ekibi / yüksek güç dikkatine getirmek, No" haşlayın
İkili worrier

13

Java'da bir obfuscator kütüphanesi arar mıyım ve eski kodunu düzeltiyor muyum (kodunu yeniden düzenlemesi konusunda biraz dokunaklı olabilir), yoksa bitmeyen bir şey değil mi?

Hayır , birisinin arkasına dönmek ve sorumlu oldukları kodu değiştirmek, başlamak için şüpheli kodu yazmaktan daha kötü bir suçtur.

Programcı ile bunu başlattınız, bir sonraki adımınız burnunuzu bunun dışında tutmak veya yönetime almak ve ardından burnunuzu bunun dışında tutmak.


Sonra ileride bu sınıflardan geçerken, burnumu tutacağım sanırım.
Neil,

3
Bu kod için doğrudan bir sorumluluğunuz olduğunda, isteğinize göre değiştirmek iyidir, ancak ortak bir sorumluluk varsa, hakemlik yapmak için birilerine ihtiyaç duyacaksınız. Çalışma ilişkilerine zarar vermek ve bunun gibi durumlarda vakit kaybetmek kolaydır, mümkünse sorun çıkarmamak daha iyidir. Bir sorun yapılması gerekirse, en kısa sürede yoldan çekin.
DKnight

6

Herhangi bir şekilde resmi bir kod incelemesi var mıydı - ya da resmi olmayan bir "kod incelemesi" ile karşı karşıya kaldınız mı? Bu, güvenlik ve lisanslama gibi hassas ve önemli bir konu olduğu için, zinciri yükseltmeniz gerektiğini söyleyebilirim. İlk kısmı yaptınız - programcının karşısına çıkıyor. Ancak, şimdi dinlemediği için, onu kaldırabilir / almalısınız. Yapmazsanız, sorunun bir parçası olabilirsiniz.

Ona yapacağını söylerdim - bu fikrini değiştirebilir. Olmazsa, patronunuza durum hakkında politik olarak doğru, henüz doğru ve özlü bir e-posta yazın ve programlayıcıyı CC ile paylaşın. E-postada, siz ve / veya diğer katılımcılardan herhangi biri arasında bir toplantı isteyin.

Her zaman bu şeylerle başa çıkın - politik ve dostane bir şekilde.


Kesinlikle övgüye değer bir yaklaşım. Kod değişikliğini kendim farkettim, kodumu SVN'den güncelledim. Şansı bir anlaşma olmasa da, patronumu bu güvenlik önlemlerini almaya ikna etmek, programcının zaten 'çalıştığını' iddia edebileceğinden muhtemelen herhangi bir değişikliğe neden olmayacak.
Neil

2

Sınıfların imzasını engelleyebilecek bir gizleyici bulabilirseniz (yöntem adları vb.), Satın almayı ve kullanmayı teklif edin.

O zamana kadar onunla yaşamak zorunda kalabilirsiniz. Yeni bir Grails projesinde benzer bir şey yaptığımı itiraf ediyorum - lisans çekleri kasıtlı olarak zaten büyük giriş yöntemine eklenmiş, bu nedenle çekimi atlamak için yöntemi değiştirmek oldukça zor olurdu.


1
Bunun beni ne kadar rahatsız ettiğini söyleyemem, muhtemelen haklısın, ama onunla yaşamak zorunda kalacağım.
Neil,

2

Böyle bir kesmenin uygulanabilir olduğunu gösterebilir mi, yoksa endişelendiği varsayımsal bir senaryo mu? Bu çalışmanın canlı demosunu verebilir mi? Denemeli. Ciddi anlamda. İşe yararsa yönetime sunulmalı ve daha sonra bir obfuscator almayı önermelidir.

Bir obfuscator yeterince güvenli değilse, JAR'ı güvenceye almanın başka yollarını, belki de onu şifrelemek veya yerel koda hazırlamak gibi bir şey gördünüz mü?

RE: kodunu elden geçirme: Bu sadece yeniden adlandırma meselesi mi? Birçok IDE, bunu kolayca yapabilen yeniden düzenleme araçlarına sahiptir.


Nedenini görebilmeme rağmen, beni biraz paranoyak olarak vurdu. Ürün saldırıya uğradıysa, muhtemelen onun işi anlamına gelirdi. Bunun mümkün olduğunu söyleyemem, ancak yöntem adları için nasıl avlanabileceğinizi bilmek için yeterince bilgim var ve "isLicenseValid" adında belirgin bir yöntem varsa, bu yöntemi içeren ve her zaman için doğru olan bir sınıf yazma meselesi olur. 'Baş etmek. Bundan emin olmak istemese de, bu programın daha da karmaşıklaştırılmadan yeterince karmaşık olduğunu düşünüyorum. Sanırım kodunu yeniden adlandırarak kolayca düzeltebilirim, evet.
Neil,

Sırf "isLicenseValid" adında bir metoda sahip olmanız, aynı metodla bir sınıf yazarak saldırıya uğraması anlamına gelmez. Sınıfınızı "mühürlü" (C # sözdizimi) olarak işaretlerseniz, 3. taraflar güvenlik kontrollerinizi alt sınıflar yazıp yönteminizi geçersiz kılarak alamazlar. Her durumda, bu adam şirketin güvenlik görevlisi değilse, ürün saldırıya uğrarsa neden işi olsun?
Tundey

2
@Tundey, bu bir alt sınıf meselesi değil (nasıl yükleneceklerdi?): Aynı sınıfı yazma ve hacklenmiş sürümü sınıf yolu arama listesine daha önce koyma meselesi .
Peter Taylor

1
ha.Java içerisinde ders yükünü sevinçlerini hatırlıyorum. Yine de buna karşı önlem almanın daha iyi bir yolu olmalı. Aslında, sınıf yükleyiciniz ödün vermezse, biri sınıfınızla aynı olan bir sınıfı nasıl yazabilir? Özellikle JAR'ınız imzalandıysa? JAR'larınızı imzalamak ve sınıflarınızı mühürlemek, sizinkiyle aynı adı taşıyan bir sınıf yazma problemini çözmez mi?
Tundey

1
@Tundey the Sun JVM (çoğunlukla) açık kaynak kodludur;
Spudd86,

2

IP’nizin ne kadar değerli olduğuna bakılmaksızın, akıllı olan şey, kodunuzu korsanların kafasını karıştırmak umuduyla karıştırmak değildir. İleriye devam etmeyi sürdürmenin bir kabus olacağı gerçeğinden başka, hiçbir sorunu çözmez. Sadece zorlaştırıyor ama imkansız değil. Bu yüzden gerçekten bir çözüm değil ve yan etkileri kötü. İşe yaramayan ve kötü yan etkileri olan ilaç almak gibi.

Sorununuz IP'nizi nasıl güvence altına alacağınızdır. Bunun için bir çözüm bulun: obfuscators, lisans sunucusu vb.


% 110 sana katılıyorum. IP’yi güvence altına almakla ilgili endişeler için bu, müşterimizin yapması gereken bir önlemdir, çünkü geçerli bir noktaya değinmiş olsanız da, web uygulamasını çalıştıran kendi makinesidir. Makinemize ürünümüze doğrudan erişimi olan ve parçalara ayırabilen müşteri ile daha fazla ilgileniyordum. Bir lisans sunucusu yalnızca müşteri güvenliği kadar iyidir. Lisans sunucusuna erişmeyi atlayabilirseniz, kitaptaki hiçbir numara lisanssız programı kullanmanızı engelleyemez.
Neil,

1

Başka bir geliştirici şifreleme / şifre çözme rutinlerimizi adlandırdığında benzer bir sorunla karşılaştım str__copyve str__delete(ikinci alt çizgiyi görün). Topal oldu ve daha iyi yapılabilirdi, bu yüzden lisansın güncellenmesinin gerekli olduğu bir hikaye gelene kadar bekledik. Yönetimin saatlerce fazla meselesiyle bir sorunu olmadı çünkü onu "temizlediğimizde bir daha lisanslamaya gidersek, daha az zaman alacak ve daha güvenli olacak" olarak tanımladık. Sorun çözüldü, incinmiş duyguları yok.


Elbette daha sonra her zaman değiştirebiliriz, ancak değişikliklerin başında koddan daha fazla olması gerektiğini düşünüyorum.
Neil,

1
@Neil Öyleyse, kafanın değişmesine ihtiyacı olan sensin. Eğer kod çalışırsa, yeterli teste sahipse ve kullanmak yerine obstrüktör kullanmak yerine o rotaya gidileceği iyi yorumlanmış, ancak dünyanın sonu değil. Sorun varsa daha sonra düzeltin ve başka türlü devam edin.
Christopher Bibbs

@Christopher_Bibbs: Aklını rahatlat. Nihayetinde bir problem çıkartacağı konusunda sizi kesinlikle temin ederim.
Neil,

1

İlk düşüncem bu kodun korunmasıydı. Kod çoktan karışmışsa ve devam ederse, bu kodu ele almaya çalışırken iyi şanslar. Daha sonra kodu deşifre etmeye çalışan hacker olacaksınız.

Bunun yerine, kodu temizlemenizi ve tüm zor işleri yapmak için bir obfuscator kullanmanızı öneririm. Uzun vadede yönetilebilir bir kodunuz olacak ve lisansınızı kesmek isteyenlere çılgınca bir karmaşıklık bırakacaksınız.

Hiçbir gizleyicinin mükemmel olmadığını ve çok kararlı bir hacker'ın herhangi bir şeyi tersine çevirebileceğini unutmayın, ama en azından sadece o olacaktır. Ayrıca obfuscaters, muhtemelen bir adamın yapabileceğinden çok daha fazla karmaşıklık ekler.


0

Patronunuza konuyla ilgili sormanız ve söylediklerini yapmanız gereken cevaplara son derece katılıyorum.

Ancak, bu cevapların çok önemli bir eki, hem güvenlik hem de sürdürülebilirlik konusundaki endişelerinizi belgelemeniz gerektiğidir. Kodu değiştirseniz de değiştirmeseniz de, kişilerin neye endişelendiğinizi ve nedenini bilmeleri önemlidir. Bu hem proaktif olarak önemlidir (hem de patronunuz bilmesi gerekmeyen bir kararı bile veremez) ve savunmada (eğer bir bilgisayar korsanı zayıf güvenlikli lisanslama sistemindeki delikleri açarsa, sizi sorumlu tutamazlar) hata.)


0

"Bir problemi bilen en iyi profesyonel olmayın".

Başka bir deyişle, patronuna söyle ve oradan git. Sessiz kalırsanız ve bu sır üzerindeki totum direğin tepesindeyseniz, itme kıpırdamadığı zaman sorumlu olacaksınız. Patronuna geçmesini söyle ve yaklaşması için bir yol karar vermesine izin ver. Bu şekilde, seçim yükünden kurtulmuş olursunuz.

Sadece patronunuza söylemeyin, çünkü birçok yönetici belki de teknik değildir, ancak her zaman yaptığımız şeyi yapın: bu çözümlerin her biri için avantaj / dezavantajları olan sorunu ve olası çözümleri verin. Öyleyse karar vermelerine izin verin ve bu kararların geçmesini sağlayın. Bu yüzden yöneticilere / liderlere büyük paralar ödendi!


0

Asıl gerçek şu ki, yeterli zaman ve kaynak verildiğinde, her şeyin kırılabileceği. Uygulamanızın ne kadar popüler olduğu basit bir işlevdir. Ne kadar popüler olursa o da o kadar çok yetenekli korsandır ve onu kırmaya daha fazla zaman harcar. Kod gizleme, sadece bunu sağlar - şifrelemeye benzer şekilde, onu kırmak için gereken zamanı artırmak için bir araç. Bu nedenle, kodunuz gizlendiyse, saldırganın yetenekli olmasını ve ona zaman ayırmasını gerektirir, aksi halde umutsuzluğa düşecek ve pes edecektir. Uygulamanızın her iki ucunda da bir sorun olup olmadığını kendinize sormalısınız.

Bu karıştırılmış kodu kırmak için ne kadar zor olabileceği gerçekten şaşırtıcı. Basit bir 10 satırlık C programını 100 satırlık bir düzeneğe şaşırtmayla kolayca döndürebilirsiniz. Eğer hata ayıklamayı denerseniz kodda anlamsızca zıplarsınız ve içinden geçmek gerçekten sinir bozucu olabilir. Sonunda kırılacak, ancak çok zorlaşacak ve hiçbir şey gerçekten imkansız olmadığı için mesele bu. Kod gizliliği, onu kırabilecek kişi sayısını azaltır.

Tabii ki, hata ayıklayıcının krakeri değil krakeri karıştırmaya çalışmak gibi daha iyi yolları vardır, ancak bu ucuz ve verimli bir yöntemdir. Ancak bazı şeyleri garip bir şekilde adlandırmak onu kesin olarak kesmez. Genel kodunuz için gerçekten hiçbir şey yapmayan kontrol akış çağrısı işlevlerini değiştirmeniz, ancak bunun boyutunu ve karmaşıklığını arttırmanız gerekir: dönüş değeri hiçbir yerde kullanılmayan yapay işlevleri çağırın, gerçekten bir şey yapan işlevlerin içinden. Bunun gerçekten kafa karıştırıcı olabileceğini zaten görebilirsiniz.

Saldırganın sahip olmadığı bir şeyin var. Orijinal kaynak kodu. Kendiniz için daha iyi organize etmek için bir yol bulun.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.