31 Ağustos 2016 Çarşamba

Nimda

2001'de ortaya çıkan bir başka virüs: Nimda (admin kelimesinin ters yazılışı). Nimda internette o kadar hızlı yayıldı ki virüs tarihine en kısa sürede yayılan virüs olarak adını yazdırdı. TruSecure CEO'su Peter Tippett'e göre virüsün ortaya çıktıktan sonra en çok rapor edilen saldırı ünvanını alması 22 dakika sürdü.

Nimda'nın başlıca hedefleri internet "serverları" idi. Ev bilgisayarlarını da etkilemesine rağmen asıl amacı internet trafiğini yavaşlatmaktı. E-posta dahil birçok yöntem ile internet üzerinde yayılma imkanına sahipti. Bu da virüsün rekor bir hızla yayılmasına neden oldu.

Nimda virüsü saldıran kişinin, kurbanın bilgisayarında kurban kadar söz sahibi olmasını sağlıyordu. Yani eğer kurban, bilgisayarı üzerinde kısıtlı bir hesaba sahip ise saldırının arkasındaki kişi de kısıtlı imkanlarla bilgisayarı yönebiliyordu. Ancak eğer kurban bilgisayarı üzerinde tam yetkiye sahip ise saldırıyı gerçekleştiren kişi de kurbanın bilgisayarında tam kontrole sahip oluyordu.
 
 

[PHP] Dosya Yolunu Vermeden Dosya Paylaşımı

Merhaba, bu yazımda size dosyalarınızın kaynak yolunu vermeden dosyaları indirme yöntemini göstereceğim. Bu şekilde yapılan indirmelerde dosyayı indirme yolu olarak sizin PHP dosyanızın yolu verilecektir. Basit ama çok etkili bir yöntemdir ve bu sayede müzik / film / resim ve daha aklıma bile gelmeyen bir sürü dosya paylaşım veya satış sitelerinde online olarak indirmelerde dosyalarınızı korur, sadece o kişinin o dosyayı indirebilmesini sağlarsınız.

Bu günkü yazımda hem en sade halini, hem de Session ile güvenlikli bir indirmenin yolunu anlayacağız. Session sistemimizde kullanıcının bizim dosyayı indirmesini istediğimiz kullanıcı olup olmadığı ve  belirli bir indirme limiti aşıp aşmadığını test edeceğiz. İlk olarak en basit yolu gösteriyoruz. Burada değerini değiştirmeniz gereken iki değişken vardır. Zaten kodların açıklamalarında neden ve nasıl olduğu gayet net bir şekilde açıklanmıştır.

Sade Versiyon (Kodlar)
?
1
2
3
4
5
6
7
<?php
$DLPath = "Downloads/Secure/";
$DLFile = "File.zip";
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="'. $DLFile .'"');
readfile($DLPath. $DLFile .);
?>
Sade Versiyon (Açıklamalar)
Kodların açıklamalarını aşağıda vereceğim.  Bu sayede daha iyi ve anlaşılır olacaklar.

$DLPath Bu kod ile dosyamızın gerçek yolunu belirtiyoruz. Burada dikkat etmeniz gereken şey dosyamızın adı ve uzantısı bu yolda geçmeyecek. Örnek kullanım: "Downloads/Secure/"

$DLFile Dosyamızın adı ve uzantısı. Dosya kullanıcının bilgisayarına inerken de bu isimle inecektir. (Fakat dosya yolu kullanıcıya gözükmeyecektir) Örnek Kullanım: "File.zip" Dosyanın Gerçek Yolu: "Downloads/Secure/File.zip"

header('Content-type: application/zip'); İndirilecek olan dosyanın formatı seçilir. Daha fazla format için tıklayın.

header('Content-Disposition: attachment; filename="'. $DLFile .'"'); Sayfamızın HTML değil de bir dosya olduğunu belirtir.

readfile($DLPath. $DLFile .); Dosyamızı indirmemizi sağlayan fonksiyondur. Burada $DLPath ile $DLFile'ı birleştiriyoruz. Bu sayede readfile fonksiyonuna girdiğimiz değer: Downloads/Secure/File.zip olmaktadır.

Bu sayede dosyamızı yolunu başka kimseyle paylaşmadan indirmiş olduk. Şimdi gelelim daha gelişmişine. Aslında burada yapmamız gereken tek şey altta vereceğim kodları buradaki kodların üstüne eklemek olacak çünkü kodlarımızı ona göre yazacağım.

Gelişmiş Versiyon (Kodlar)
Burada alacağınız tüm kodları Sade Versiyonun hemen üstüne ekleyerek kullanabilirsiniz. Bu sayede sisteminizden dosya indirmek isteyenlerin belirli bir Session'a sahip olması ve indirme limitini aşmamış olması gerekmektedir. Bu sefer açıklamaları kodların içinde vereceğim. Çünkü bu sefer sadece if else deyimleriyle işlem yapacağım. Burada önemli olan ve değerini değiştirmeniz gereken sadece bir adet değişken var. O da indirme limitimizdir 🙂

?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
//Sessionları başlatıyoruz. Eğer bu kod olmaz ise hiçbir session değerimiz çalışmaz.
session_start();
//İndirme limitimizi buradan belirliyoruz. İstediğiniz basamakta sayı girebilirsiniz. Yalnız değer sadece tamsayı olmalı !
$LIMIT = 5;
//Eğer kişinin dosyayı indirme yetkisini belirleyen session değeri boş ise hata yazdırıp exit(); fonksiyonu ile işlemi durduruyoruz.
if (empty($_SESSION['YETKI'])){
echo "Bu dosyayı indirmek için gerekli yetkiye sahip değilsiniz !";
exit();
}
//Eğer indirme adedimizi sayan session değeri boş ise onu 0'a eşitliyoruz ki sistemimiz işlemleri yaparken sorun yaşamasın.
if (empty($_SESSION['INDIRME'])){
$_SESSION['INDIRME'] = 0;
}
//İndirme adedimizi sayan session değeri belirlediğimiz limitten büyük veya o limiti aşıyor ise hata yazdırıp işlemi durduruyoruz.
if ($_SESSION['INDIRME'] >= $LIMIT){
echo "İndirme limitinizi aştınız. Bu dosyayı indiremezsiniz !";
exit();
}
//Tüm kontrollerden başarıyla geçildiyse indirme adedimizi bir arttırıyoruz ki kişinin dosyayı kaç kere indirdiğini sistem anlasın.
$_SESSION['INDIRME'] ++;
?>
Kişilere Yetki Vermek
Kişilerin dosya indirmesini sağlamak için onlara yetki vermelisiniz. Bunun için aşağıdaki kodu session_start(); kodundan sonraki bir yere eklemelisiniz. Bu sistemimizde Yetki sessionunun içindeki değerin ne olduğuna bakmadık, sadece boş ise hata verdik (ki session açılmadıysa o her zaman boş olacaktır.)

?
1
2
3
<?php
$_SESSION['YETKI'] = "kullanıcının yetkisi bulunmaktadır";
?>
Derli Toplu Kod
Evet, her şey bu kadardı, şimdi size kodların tümünü derli toplu bir vaziyette vereyim ki rahat bir şekilde kullanabilesiniz. Bu kodumuzda tüm kullanıcılara dosya indirebilmesi için gereken yetkiyi de otomatik olarak vereceğiz (yani üstteki kod aşağıdaki kodların arasında bulunmaktadır.).

?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
</pre>
<?php
//Sessionları başlatıyoruz. Eğer bu kod olmaz ise hiçbir session değerimiz çalışmaz.
session_start();
//Kullanıcıya yetkisini veriyoruz.
$_SESSION['YETKI'] = "kullanıcının yetkisi bulunmaktadır";
//İndirme limitimizi buradan belirliyoruz. İstediğiniz basamakta sayı girebilirsiniz. Yalnız değer sadece tamsayı olmalı !
$LIMIT = 5;
//Eğer kişinin dosyayı indirme yetkisini belirleyen session değeri boş ise hata yazdırıp exit(); fonksiyonu ile işlemi durduruyoruz.
if (empty($_SESSION['YETKI'])){
echo "Bu dosyayı indirmek için gerekli yetkiye sahip değilsiniz !";
exit();
}
//Eğer indirme adedimizi sayan session değeri boş ise onu 0'a eşitliyoruz ki sistemimiz işlemleri yaparken sorun yaşamasın.
if (empty($_SESSION['INDIRME'])){
$_SESSION['INDIRME'] = 0;
}
//İndirme adedimizi sayan session değeri belirlediğimiz limitten büyük veya o limiti aşıyor ise hata yazdırıp işlemi durduruyoruz.
if ($_SESSION['INDIRME'] >= $LIMIT){
echo "İndirme limitinizi aştınız. Bu dosyayı indiremezsiniz !";
exit();
}
//Tüm kontrollerden başarıyla geçildiyse indirme adedimizi bir arttırıyoruz ki kişinin dosyayı kaç kere indirdiğini sistem anlasın.
$_SESSION['INDIRME'] ++;
?>
<?php
$DLPath = "Downloads/Secure/";
$DLFile = "File.zip";
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="'. $DLFile .'"');
readfile($DLPath. $DLFile );
?>
<pre>
Bazı sunucular benim deyimimle titiz olduklarından hata verebilirler. Bunun olmaması için sayfanın en üstüne (< ?php tagından hemen sonra) ob_start(); kodunu sayfanın en altına (?> tagının hemen üstüne) ob_end_flush(); komutunu ekleyin. Ve ek olarak indirme işleminiz olan sayfada önceden hiçbir yazı vb. şeyin olmaması gerekmekte html kodları da dahil. Yani kaynak kodlarınız tamamiyle boş olmalıdır.

Ve Yazının Sonu
Evet, tüm kodlar bu kadardı. Kodların tamamını test etmedim ama çalışacağına eminim. Yine de bir sorun çıkarsa bana alttan yorum yolu ile veya iletişim bölümünden bildirirseniz hemen düzeltirim.

Umarım yararlı olmuştur. Eğer beğendiyseniz bu yazıyı üstteki butonlardan paylaşabilir veya bize Destek Ver'ebilirsiniz. Her türlü soru ve sorununuzda yorum atmayı unutmayın, sağlıcakla kalın …

Hosts Dosyasının Gizemi

Hosts dosyası, YouTube engellendiği sıralar bayağı bir bilinen dosyaydı. O sayede tanıdı herkes bu hosts dosyasını. Fakat nedir bilmiyoruz bu hosts dosyası?

Bir web sitesine giriş yapmak için normalde alan adı değil de bir numara girmemiz gerekir. Mesela facebook.com'un numarası 173.252.101.26 'dır. Fakat bu numaraları aklımızda tutmak zor olduğundan dolayı onun yerine "facebook.com" gibi adresler ile bu numaraları kolayca bulmamızı sağladık. Yani siz aslında adres çubuğuna facebook.com yazdığınız zaman aslında 173.252.101.26 adresine gidiyorsunuz. Bu kısım bu kadar. Peki nedir bu hosts dosyası?

Hosts Dosyası Ne İşe Yarar?
İşte bu dediğimiz hosts dosyası, şu işe yarar; tarayıcımızda facebook.com diye aradığımızda bilgisayarımız önce hosts dosyasına bakar. Eğer hosts dosyasında facebook.com ile ilgili bir kayıt var ise (#       173.252.101.26   facebook.com gibi) sistem direk onu açar. Eğer öyle bir kayıt bulunmuyorsa bilgisayarımız internette bulunan DNS sunucularına bağlanarak facebook.com'un adresini öğrenir ve bağlanır.

Nerede Bulunur?
Windows'u kurduğunuz dizinde (Bende C:/ sürücüsünde) Windows diye bir klasör olur. Ona tıklıyoruz. Ardından: "System32/drivers/etc" klasörüne (Bölü işaretleri bir sonraki klasörü temsil eder)  gidiyoruz.  İşte hosts dosyamız burada. Veya aşağıdaki adres ile direk gidebilirsiniz.

Windows'u C:/ Sürücüsüne Kuranlar: C:\Windows\System32\drivers\etc
Windows'u D:/ Sürücüsüne Kuranlar: C:\Windows\System32\drivers\etc

İnsanları Çıldırtabilecek Şey Ne?
İşte yukarıda da bahsettiğim üzere eğer orada bir site ile ilgili kayıt var ise sistem direk olarak bizi oraya yönlendiriyor. Bizde bundan faydalanarak siteleri engelleyebiliyoruz. Yani tarayıcıdan facebook.com veya google.com diye girmeye çalıştığımızda sistem otomatik olarak bizi istediğimiz DNS adresine yönlendirecek.

Karşıya direk bulunamadı hatası çıkarmak istiyorsak aşağıdaki şekilde bir yol izliyoruz. Bilgisayarınızda localhost yani yerel sunucu var ise sistem direk sizi ona yönlendirecek. Eğer yok ise hata verecek ki bu sayede kişi "Her siteye giriyorum tek facebook ile google'a giremiyorum." diyecek.

Hosts dosyasını açın ve en altına aşağıdakileri ekleyin. Büyük sitelerin başka uzantıları olduğundan dolayı kişinin yanlışlıkla da olsa girme ihtimali var. O yüzden bunları da düşünerek yapın ve her siteye bir www. olacak ve bir de olmayacak şekilde link verin. Unutmayın her satıra sadece bir link yazılıyor 🙂

127.0.0.1 facebook.com
127.0.0.1 google.com

127.0.0.1 www.facebook.com
127.0.0.1 www.google.com
127.0.0.1 www.facebook.com.tr
127.0.0.1 www.google.com.tr

127.0.0.1 facebook.com.tr
127.0.0.1 google.com.tr
Yukarıda gördüğünüz gibi hosts dosyamızdan facebook ile google'ın hem com.tr hem de com uzantılarını engelledik. Kişi bu linklerden birine girmeye çalıştığında sistem onu otomatik olarak 127.0.0.1 adresine yönlendirecek, ki kişinin bilgisayarında localhost bulunmadığından hata verecek (bulunsa da problem değil, yine oraya yönlendirir 🙂 ) Ardından dosyayı kayıt edin ve yerine koyun. Ardından garanti olsun diye bilgisayarı yeniden başlatın.

Youtube ile İlgili 5 Faydalı 5 Eğlenceli Bilgi

Bu videoda Youtube'la ilgili ipuçları, sürpriz yumurtalar ve sonunda da 'webdriver torso'nun kim olduğu var.

Youtube'da bir videoyu ağır çekimde veya tam tersi, hızlı çekimde seyredebilirsiniz. Bunun için videonun sağ alt köşesindeki Ayarlar bölümüne tıklayın. 1'den büyük bir rakam seçerseniz video hızlı gösterilir. 1'den küçük rakamlarda ise düşük hızda izlerseniz. 

Bir video izlerken tek bir sahneyi ağır çekimde izlemek isterseniz space, yani boşluk tuşunu basılı tutun. Süper bir yöntem olmasa da o sahneyi ağır çekimde izlemenizi sağlar.

Videoyu ileri veya geri sarmak için 1'den 9'da kadar olan rakamları kullanabilirsiniz. Örneğin 2'ye basınca videonun yüzde 20'si kadar ilerlerseniz. 8'e basınca videonun yüzde 80'i kadar ileri gidersiniz. 0'a tıklarsanız videonun en başına dönersiniz.

'Leanback', yani 'Arkana Yaslan' aslında Youtube'un televizyon için yaptığı bir uygulama. Ancak dilerseniz bilgisayarda da faydalanabilirsiniz. Bunun için 'youtube nokta com taksim leanback" yazın. Bir video başlatın. Sonra da Youtube'un dediği gibi arkanıza yaslanıp otomatik gösterilen videoların keyfini çıkarın.

Bir arkadaşınıza Youtube videosu göndereceksiniz ama izlemeye videonun belirli bir yerinden başlasın istiyorsunuz. "Paylaş"a tıklayın. "Başlatma zamanı" kutucuğunu işaretleyin. Zamanı ister elle yazın, isterseniz de videonun ilgili yerine gelip kutucuğu öyle işaretleyin. Artık arkadaşınıza bu linki gönderdiğinizde video tam istediğiniz yerden başlar.

Arama kutusuna "Do the Harlem Shake" yazarsanız sayfadaki her şey logodan başlayarak Harlem Shake yapmaya başlar.

Arama kutusuna "Use the force Luke" yazarsanız ekrandaki arama sonuçlarını beyninizle hareket ettirmeye başlarsınız. Bu tabii Star Wars hayranlarının anlayabileceği bir espri.

Eğer Star Trek, yani Uzay Yolu dizisinin hayranıysanız sizin için de bir sürpriz var. Arama "Beam me up, Scotty" yani, "Işınla Beni Scotty" yazdığınızda arama sonuçları ışınlanarak gelir.

Arama kutusuna "Webdriver Torso" yazdığınızda arama sonuç sayfası kırmızılara ve mavilere bulanır. Bu tabii ünlü "Webdriver Torso" kanalına gönderme. "Webdriver Torso" kanalının şu an 100 binden fazla videosu var. Bazen aynı dakika içinde birkaç video yüklediği bile oluyor. En ilginci de, videolarının hepsi böyle ve tümünün süresi 11 saniye. 

"Webdriver Torso" hakkında pek çok söylenti var. Videoları uzaylıların yüklediği bile söyleniyor. Ancak 10 Ocak 2014'te BBC'de yer alan bir haber komplo teorilerini alt üst etti. Webdriver Terso'nun arkasında meğer Youtube varmış. Youtube bu kanalı, yüklenen videoların kalitesini test etmek için kullanıyormuş. Dolayısıyla panik yok arkadaşlar. Uzaylılar Youtube'a henüz el atmış değil.

YouTube Easter Eggs

YouTube'da hiç aklınıza gelmeyecek, komik easter eggleri ile çok hoş bir deneyim yaşayacaksınız. Easter Eggs'in Türkçe çevirisi, Paskalya Yumurtası'dır. Fakat bilgisayarda anlamı ise yazılımcıların can sıkıntısında yaptığı, değişik kombinasyonlar ile ortaya çıkan ve eğlendirmeye yarayan minik hilelerdir.

Hiç bilmiyordum fakat YouTube'da da varmış. Aşağıdaki videodan izleyebilirsiniz;



Listesi de Şu Şekilde
Video'da bulunan Easter Egg'ler ve nasıl kullanıldıkları (açıklamalarını yazmadım fakat hepsi de gerçek)

Arama alanına BEAM ME UP SCOTTY yazın, ve arayın.
Arama alanına USE THE FORCE LUKE yazın, ve arayın.
Bir YouTube linkini sonuna &wadsworth=1 yazın, videoyu ilk %30'undan itibaren izlemeye başlayacaksınız.
Arama ekranında aramak istediğiniz kelimenin başına / (bölü) işareti ve bir de boşluk koyup o şekilde aratırsanız arama ekranı aklınızın almayacağı bir hale bürünüyor.
Arama ekranına FIBONACCI yazıp aratırsanız, bir daha o diziyi unutmazsınız.
http://www.youtube.com/robots.txt adresine tıkladığınız zaman özel bir mesaj içeren robots.txt dosyası ile karşılaşacaksınız. (robots.txt dosyası arama motorlarının sitenin hangi kısmını indexleyip, indexlemeyeceğini belirtir)
Bir video izlerken (GTA hilesi yazar gibi) hızlı bir şekilde 1980'i tuşlarsanız Missle Command oyunu ortaya çıkıyor, füzeler her hedefine ulaştığında da videonuz yavaş yavaş kırılıyor. Oyunun sonunda kaybederseniz videonuzu savunamamış oluyorsunuz. Kazanırsanız da savunmuş. 🙂
Arama ekranına DOGE MEME yazıp aratırsanız çok hoş fontlarla karşılaşıyorsunuz.
Arama ekranına DO THE HARLEM SHAKE yazıp aratırsanız, popüler Harlem Shake dansını YouTube'un da yaptığını görürsünüz.

SMTP Mail Gönderme Fonksiyonu

Bu gün sizler için basit bir fonksiyon paylaşacağım. Bu şekilde normal php mail fonksiyonunu rahatlıkla SMTP'ye çevirebilirsiniz. Fonksiyon PHP Mailer Class'ını kullanır.

Kullanımı

Normal PHP Mail fonksiyonunu kullanarak mail göndermek istediğinizde, aşağıdaki şekilde bir kod kullanırsınız.

1
mail("mail@site.com","konu","mesaj içeriği");

Bunda ise gerekli ayarlamaları tanımladıktan sonra;

1
2
Devamını Oku<p></p>
                     

PHP ile Email Adresi Kısıtlaması

Sadece belirli email uzantılarını kabul etmek için aşağıdaki fonksiyonu kullanabilirsiniz. Kullanımı çok kolaydır. Rahatlıkla her yerde kullanabilirsiniz.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
<?php
/*
Mail Kontrol Fonksiyonu
  

*/
function email_kontrol($email){
//Hangi uzantıdaki email adreslerini kabul edeceksek onları yazıyoruz
$sart = array('gmail.com','hotmail.com','yandex.com');
if ( filter_var($email, FILTER_VALIDATE_EMAIL) ){
$parcala = explode("@",$email);
$son = end($parcala);
if(in_array($son,$sart)) return TRUE;
else return FALSE;
}else{
return