Geri Dön   Forum Ti > Programlama Dilleri ve İnternet > Web Geliştirme Dilleri
Üye Ol Üye Listesi Takvim Forumları Okundu İşaretle

Web Geliştirme Dilleri İnternet sitesi geliştirme için kullanılan araçlar ve programlama dilleri... ASP & ASP.NET & PHP & CSS & HTML & SQL & Java Script

Cevap
 
Konu Araçları
Eski 09.06.2007   #1 (permalink)
 
Katılma Tarihi: Şub 2006
Nereden: Bursa/es-es
Yaş: 23
Mesajlar: 1,780
Varsayılan Şifreleme Algoritmaları ve Veri Güvenliği...

Problem:Verilerimizi bir anahtarla sifrelemek istiyoruz.Ama nasil?


Cozum:Kendi sifre/desifre algoritmanizi yazin.



Sifrelemek icin:



<?php
function veriyi_sifrele ($veri,$anahtar) {



for ($i=0,$j=0;$i<strlen ($veri); $i++,$j++){
$orta = ord(substr($veri,$i,1)) + ord(substr($anahtar,$j,1));
if ($j > strlen($anahtar)) {$j=0;}
$sifrelenmis_veri .= chr ($orta);
}
return ($sifrelenmis_veri);



}






$sonuc= veriyi_sifrele ($veri,$anahtar);
echo $sonuc;



?>



Desifrelemek icin:



<?php
function veriyi_desifrele ($veri,$anahtar) {



for ($i=0,$j=0;$i<strlen ($veri); $i++,$j++){
$orta = ord(substr($veri,$i,1)) - ord(substr($anahtar,$j,1));
if ($j > strlen($anahtar)) {$j=0;}
$desifrelenmis_veri .= chr ($orta);
}
return ($desifrelenmis_veri);
}



$sonuc= veriyi_desifrele ($veri,$anahtar);
echo $sonuc;



?>






Yukaridaki algoritmalar neredeyse guvenilemeyecek kadar basit yapili sifreleme yapilaridir.Daha iyi bir cozum ariyorsaniz PHP ile beraber gelen TripleDES sifreleme yapilarini kullanabilirsiniz.Kisa bir ornek vermek istersek,









<?php
$anahtar = "Serkan Hadi Ceylani";
$veri = "Kendi zamaninda yapilan politika sonsuzlugu yakalar";



$sifrelenmis_veri = mcrypt_ecb(MCRYPT_TripleDES,$anahtar,$veri,MCRYPT_ ENCRYPT);
$desifrelenmis_veri = mcrypt_ecb(MCRYPT_TripleDES,$anahtar,$veri,MCRYPT_ DECRYPT);
?>



MD5 Sifreleme Algoritmasi



Web sayfalarinda kullanilan "oturum yonetimi" gibi uygulamalar icin yaratilabilcek en guzel Kullanici ID asagidaki gibidir :





(getmypid () fonksiyonu kullanilarak farkli server proseslerinin veya intranet uzerinde ayni agda yer alan serverlar icin farkli kisiler icin ayni ID uretilmesi problemi ortadan kalkmaktadir

Kullanilan butun fonksiyonlar PHP ile beraber gelmektedir.


<?php
$id = md5(uniqid(microtime(), 1)) . getmypid ();
?>



Ornek Uygulama



Simdi de kendi yazdigimiz ornek ile ilgili bir alistirma yapalim ve sifreledigimiz verilerin neler olduguna nasil sifrelendigine bakalim.



Once veriyi alacagimiz HTML formunu hazirlayalim.



1.Asagidaki kodlari text editorunuz yazrdimiyla yaziniz.



<HTML>
<HEAD>
<TITLE>Sifreleme ve Desifreleme Algoritmalari</TITLE>
</HEAD>
<BODY>
<FORM ACTION="sifrele.php" METHOD=GET>
Lutfen sifrelemek istediginiz veriyi asagidaki kutuya giriniz.
<BR>
<INPUT TYPE=TEXT NAME="veri">
Lutfen bu veri icin bir sifreleme anahtari giriniz.
<BR>
<INPUT TYPE=TEXT NAME="anahtar">
<INPUT TYPE=SUBMIT VALUE=Sifrele>
</FORM>
</BODY>
</HTML>



2. Bu dosyayi "sifrele.html" olarak kayit edin.



Simdi de sifrelenmesi icin bu verinin gelecegi "sifre.php" dosyasini yazalim.Tabii ki yukaridaki algoritmayi programa donusturmekten baska bir olay degil yaptigimiz.



3.Asagidaki PHP kodlarini text editorunuz yardimiyla yaziniz.



<?php
//sifrele.php



function veriyi_sifrele ($veri,$anahtar) {



for ($i=0,$j=0;$i<strlen ($veri); $i++,$j++){
$orta = ord(substr($veri,$i,1)) + ord(substr($anahtar,$j,1));
if ($j > strlen($anahtar)) {$j=0;}
$sifrelenmis_veri .= chr ($orta);
}
return ($sifrelenmis_veri);
}



$sonuc= veriyi_sifrele ($veri,$anahtar);
echo $sonuc;



?>



4.Bu dosyayi "sifrele.php" olarak kayit ediniz.



5. sifrele.html dosyasini acip kendi yazdiginiz algoritma ile verilerinizi sifreleyin.
staticiation Şuanda Forumda Değil   Alıntı yaparak cevapla
Eski 09.06.2007   #2 (permalink)
 
Katılma Tarihi: Şub 2006
Nereden: Bursa/es-es
Yaş: 23
Mesajlar: 1,780
Varsayılan

PHP Cikti Kontrol Fonksiyonlari ve HTTP Basliklari


Cikti Kontrol fonksiyonlarinin PHP'ye eklenme sebebini ve ne tur durumlarda bize
yardimci olabilecegini anlamak icin HTTP HEADER (baslik)'larinin ne oldugu ve
nasil calistigi konusuna biraz deginmek gerekiyor.






HTTP HEADER (HTTP BASLIGI)



HTTP protokolu kullanilarak web sunucusuna yapilan her cagriya, gonderilen cevap
her zaman iki bolumden olusur, baslik ve govde. Mesela web surucumuzde 'ornek.txt'
adinda "Turkiye'nin en iyi PHP sitesi Turk-php.com !" seklinde bir satir iceren bir
dosyamiz oldugunu varsayalim.



Web sunucumuzun bu dosyayi cagiran bir tarayiciya gonderecegi cevap asagidaki gibidir.



HTTP/1.1 200 OK
Date: Sat, 02 Sep 2000 21:40:08 GMT
Server: Apache/1.3.11 (Unix) mod_macro/1.1.1 PHP/4.0.2-dev
Last-Modified: Sat, 02 Sep 2000 21:39:49 GMT
ETag: "12600b-e-39b173a5"
Accept-Ranges: bytes
Content-Length: 14
Connection: close
Content-Type: text/plain


Turkiye'nin en iyi PHP sitesi Turk-php.com !





Bu cevabin ustte kalan ilk kismi HTTP Basligidir. Kullanicilar ustteki bu baslik kismini
gormeseler de, bu kisim icerik tipi, kullanilan protokol versiyonu, dokumanin son guncellenme
tarihi ve benzeri gibi cok miktarda bilgi ihtiva etmektedir. HTTP basliginin formati konusunda
cok fazla bir kural yoktur ve genelde satir basina bir tane





Alan Adi : Deger



seklindeki ciftlerden olusur.



Burada en dikkat edilmesi gereken nokta HTTP Basliginin, Icerik govdesinden bos bir satir ile
ayrilmis olmasi gerektigidir.



HTTP basligindaki bilgilere PHP fonksiyonlarini kullanarak ekleme veya degistirme yapabilirsiniz.
Mesela bunu acik bir sekilde header () fonksiyonunu kullanarak yapabilirsiniz:



header("Location: http://www.turk-php.com/"); // sayfayi yonlendir


HTTP basligini direk olmayan bir sekilde SetCookie() fonksiyonuyla da manipule edebilirsiniz.


SetCookie("foo", "bar");


HTML cookie'leri , HTTP basliklari kullanilarak uygulanmaktadir. Mesela asagidaki php kod blogunu
ele alalim:


<?php


SetCookie("foo", "bar");



print "Cookie yaz.";



?>






Bu kod blogunun web sunucusundan ciktisi asagidaki sekilde olacaktir:


HTTP/1.1 200 OK
Date: Sat, 02 Sep 2000 21:43:02 GMT
Server: Apache/1.3.11 (Unix) mod_macro/1.1.1 PHP/4.0.2-dev
X-Powered-By: PHP/4.0.2-dev
Set-Cookie: foo=bar
Connection: close
Content-Type: text/html


Cookie yaz.



Kullanicinin web tarayicisi yukaridaki web ciktisini aldiginda 'foo' adinda ve 'bar' degerine
atanmis bir cookie'nin olusturulmus oldugunu anlayacaktir.





CIKTI KONTROL FONKSITONLARINA NEDEN IHTIYAC DUYUYORUZ.



Cikti kontrol fonksiyonlarinin koku PHP/FI zamanlarina dayanir. Makalemizin basinda cikti kontrol
fonksiyonlarinin header() fonksiyonu kullanildiginda alinabilecek hatalara bir cozum olarak
dizayn edildigini soylemistik. Bu hatalarin metnini tekrar hatirlayalim:



"Cannot add header information - headers already sent"
veya
Oops, php_set_cookie called after header has been sent"


Peki bu hatalar hangi kosullarda meydana geliyor? Bu hatalar PHP HTTP basligini gonderip bos bir satir ile de basligin tamamlanip asil govdeye gecildigini belirttikten sonra HTTP basligina birsey
eklemeye veya baslikta birsey degistirmeye calistigimiz zaman meydana gelir. Bunun sebebi HTTP basligi ve bunu takip eden bos satir tarayiciya gonderildikten sonra tarayicinin artik yeni baslik
bilgilerini govdeden ayiramamasindan dolayir. Daha dogrusu bu kisitlamadan dolayi, PHP isteginizi
gerceklestirmeden bir hata mesajiyla sizi durdurmaktadir.


Bu problem genelde baslik bilgilerini govde ciktisindan once gondermeye dikkat ederek kolayca
cozulebilse de bu kisitlama bazen cok kolay olabilecek programlari gereksiz sekilde zorlastirabilir.
Iste bu asamada Cikti Kontrol Fonksiyonlari yardimimiza yetismektedir.



CIKTI KONTROLU NASIL CALISIR?



Cikti kontrolu aktive edilmis oldugunda PHP ,normalden farkli olarak, program cikti gonderdigi anda
HTTP basligini tarayiciya gondermez. Bu bilgileri ve ciktiyi tarayiciya gondermek yerine, dinamik olarak buyuyen ( gerektikce kendi kendine genisleyen ) bir buffer ( tampon ) 'a gonderir. Bu sayede
baslik satirini gecmis olmaniza zaman tarayiciya henuz gonderilmedigi icin istediginiz cookie ve
baslik islemlerini yapmaya devam edebilirsiniz. En basit halinde program sona erdiginde PHP otomatik olarak HTTP basligini ve HTML govdesini tampon'dan tarayiciya gondermeye baslayacaktir.






TEMEL KULLANIM:



ob_start()
Cikti kontrolunu aktif hale getir. Bu fonksiyonu bir birinin icinde birden fazla cagirmak mumkundur.


ob_end_flush()
Tampon'da biriktirilenleri gonderip, cikti kontrolunu sona erdir.



ob_end_clean()
Tampon'da birikenleri GONDERMEDEN, cikti kontrolunu sona erdir.



ob_get_contents()
Tampon icerigini bir STRING olarak almaya yarar. Bu sayede programini ciktisini tarayiciya gondermeden bir kez daha degistirmek mumkun olmaktadir.



Buna ilaveten php.ini kurulum dosyasindaki output_buffering direktifini aktif hale getirerek her php sayfanizin ob_start() fonksiyonu cagirilmis gibi davranmasini saglayabilirsiniz.





Ornek 1:



<?php ob_start(); ?>


<h1>Ornek 1</h1>



<?php



print "Merhaba, $kullanicin";



SetCookie("Cerez", "Yukaridaki satir cikti gondermesine ragmen yine de bu cookie yaratildi");



?>








Bu ornekte hem html tagleri (<H1> ve </H1>) hem de print() fonksiyonu cikti gondermesine ragmen,
SetCookie direktifi ,cikti kontrol mekanizmasi sayesinde, sorunsuz (ve hatasiz) olarak calisacaktir.
Cikti kontrol sistemi , web sunucunuza bir miktar ek yuk bindirmektedir bu yuzden bu fonksiyonu surekli aktif hale getirmeden once bunu gozonune almalisiniz.






Ornek 2:



<?php
ob_start();
print "Bu ornekte bir string'in boyunu kullanissiz bir yontemle bulacagiz";
$uzunluk = strlen(ob_get_contents());
ob_end_clean();
?>




Yukaridaki ornekte kisaca ciktiyi tarayiciya gondermek yerine tampon'da tutup daha sonra tampondan geri cikarip boyuna bakiyoruz. Bu asamada tarayiciya gondermekten vazgecip ob_end_clean() ile tamponu bosaltiyoruz. Boylece cikti kontrolunu de durdurmus oluyoruz.






Simdilik bu kadar.. Bu makalenin ileriki bir bolumunde cikti fonksiyonlarinin ileri seviyede kullanim sekillerine ve bu fonksiyonlarla web sitelerimizden transfer ettigimiz dokumanlari sIkIstirip ( yani compression) gondererek web sitelerimizi nasil hizlandirabilecegimize deginecegiz.



Size fikri vermek acisindan daha kendi kendinize yazabileceginiz bir program fikriyle makalemizi bitiriyoruz.



Cikti Kontrol Fonksiyonlariyla Dinamik Sayfalar Yazilimi:



Eger web siteniz'de bir sayfa bir veritabani sorgusunun uzun surmesi dolayisiyla veya herhangi bir
baska sebebpten cok uzun zamanda yukleniyorsa dokumanin bir kismini tampon'a yukleyip sayfayi yavaslatan bolume baslamadan bunu tarayiciya gondererek kullaniciya sayfa daha hizli yukleniyor
izlenimi vermek mumkun.. Sorgunun sonucunu beklemeden cikti vermeye baslayabileceginizden bazi kosullarda gercek anlamda bir hizlanma da soz konusu olabilir.



En basitinden sorguya baslamadan once "Lutfen bekleyiniz sayfa yukleniyor" turu bir mesaj cikarmaniz cikti kontrolleri sayesinde artik mumkun.
staticiation Şuanda Forumda Değil   Alıntı yaparak cevapla
Cevap


Şu Anda Konuyu İnceleyen Aktif Kullanıcılar: 1 (0 üye ve 1 misafir)
 
Konu Araçları


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
klasör şifreleme Babacandeniz Resimli Program Anlatım 21 30.05.2008 19:22
İki Veri Tabanı Arasında Veri Transferi... staticiation Programlama & Geliştiriciler için 0 19.06.2007 01:38
Sayfa Şifreleme(Asp)... staticiation Web Geliştirme Dilleri 0 03.06.2007 20:50
PHP’leri Şifreleme maChaRa Web Tasarım 0 25.05.2007 09:33
HTML Kod Şifreleme CyberCoMo Web Tasarım 0 11.02.2007 22:58


Şu anki forum saati: 23:14.


cnt hizmet sağlayan firma
ForumTi.com'un yapımı ve yayınlanması CNT'ye aittir.
Sitedeki içerikleri foruma ücretsiz şekilde üye olabilen ziyaretçiler oluşturur. Bu içeriklerin sorumluluğu yazana aittir.
Eğer yasak ve aykırı içerik tespit edilirse site yöneticilerine bu konular bildirilir ve kaldırılır. Site yönetimi haberdar edildiğinde sonuç alınamaz ise servis sağlayıcı CNT'ye bildiride bulunabilirsiniz.
vBulletin® v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd. Search Engine Friendly URLs by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265