İçeriğin rss beslemesi kullanımda değil Soru - Cevap Bölümü / Kategori: Programlama

13/09/2008 - 20:10:07 cevap (8) Okunma : 555 Bu yazıyı 3 kişi tuttu.

.htaccess ile Adres satırından dosya erişimini engellemek

Merhaba,

Şöyle bir sorunum var:

Bir Mysql veritabanından PHP aracılığı ile, Flash uygulamasına PHP tarafından oluşturulmuş XML verisi çekiyorum.

Yapı şu şekilde: Flash uygulaması, veri.php dosyasını çağırır. veri.php dosyası çağrıldığında mysql’e bağlanır. Kayıtlı verileri xml formuna dönüştürür ve Echo yöntemi ile Xml formunu flash’a aktarır.

Veritabanı oldukça büyük. XML’den vazgeçip doğrudan mysql sorgularını da Flash uygulamasına alabilirim ama, bunu çeşitli nedenlerden dolayı yapamıyoruz. Bu yöntemle almamız şart.

veri.php dosyasına doğrudan erişimi engellemeliyim. Yani, herhangi bir kullanıcı tarayıcının adres satırından dosyanın tam yolunu yazarak veri.php dosyasına ulaşamamalı. Şu haliyle bu dosyaya ulaşılabiliyor. Ulaşıldığında ise veritabanının xml çıktısı görüntüleniyor (veri.php dosyası veritabaındaki tüm veriyi echo’luyor).

örneğin:

http//site.com —-> veri.php dosyasına erişim açık.(Flash uygulaması veri.php’nin xml echo’suna erişebilir)

http//site.com/data/veri.php—-> erişim reddedildi.(veri.php dosyasına erişilemez)

.htaccess ile bunu yapamadım. Hangi kuralı koyarsam koyayım, Flash uygulamasını da engelleyen bir durum oluşuyor.

Ne yapmalıyım?

adres scraby profilini göster
Murat Aktaş 13.09.2008 20:48:22
En iyi cevap mı ?

veri.php dosyasının permission’unu 664’e ayarlayın. böylelikle veri.php’yi ancak php okuyabilir.

eğer flash içinden erişim olmazsa, 744’e ayarlamayı da deneyebilirsiniz.

adres Safakizilkaya profilini göster
Safakizilkaya 13.09.2008 21:42:04
En iyi cevap mı ?

Teşekkürler;

Ancak öneriniz sorunumu çözmedi. Sunucu erişimim ssh vasıtasıyla. root login olabiliyorum ve CHMOD haklarını her düzeyde verebiliyorum.

Hiç bir CHMOD seviyesinde veri.php’nin xml çıktısının görüntlenmesini engelleyemedim.

Tekrar özetleyeyim. .htaccess ile klasöre erişimi sınırladığımda, evet, veri.php’ye erişim engelleniyor ama Flash dosyası da engelleniyor.

Flash uygulaması Default.php içerisinde gömülü.

Siteye girildiğinde, Flash uygulaması, aynı dizinde bulunan "definitions.php" den bveri.php dosyasının yolunu öğreniyor. Definitons.php sadece kimi dosya yollarını içeriyor. Başka bir özelliği yok.

Şöyle:


<?php
  $xmlgate="data_sources/data.php";
    echo "&gate=$xmlgate"; 

?> 

Sonra, flash uygulaması, definitons.php dosyasından aldığı dosya yolunu kullanarak veritabanından kayıtları alan veri.php dosyasını çağırıyor

Şöyle:


var get_stm_data:LoadVars = new LoadVars();
get_stm_data.load("definitions.php");
get_stm_data.onLoad = function(baseFileLoaded) {
    if (baseFileLoaded)
    base=get_stm_data.gate

    xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.load(base);
xmlData.onLoad = (loadXML);

};

veri.php dosyası, definitions.php dosyasındada görüleceği üzere, bir alt dizinde. yapısı ise özetle şöyle:


<?php
header("Content-Type: text/xml; charset=utf-8"); 
?>
<?php

$dbServer='localhost';

// username and password to log onto db server
$dbUser='root';
$dbPass='passwd';

$db='database';

    $link = mysql_connect("$dbServer", "$dbUser", "$dbPass")or die("i cant connect");
mysql_query("SET NAMES 'utf8'");
    mysql_query("SET CHARACTER SET utf8");
    mysql_query("SET COLLATION_CONNECTION = 'utf8_turkish_ci'");

    mysql_select_db("$db")or die("Could not select database");


    $query = mysql_query("SELECT * FROM products");


        $rowResults = mysql_num_rows($query);

    echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
    echo "<products>\n";


for($i=0;$i<$rowResults;$i++){
    $productImage = mysql_result($query,$i,"product_image");
    $productName = mysql_result($query,$i,"product_name");
    $productCategory = mysql_result($query,$i,"product_category");
    echo "<product>\n";
    echo "<image>" . $productImage. "</image>\n";
    echo "<caption>" . $productName . "</caption>\n";
    echo "<productcategory>" . $productCategory . "</productcategory>\n";
    echo "</product>\n";
    }

    echo "</products>\n";

    mysql_close($link);

    ?>

Sorunum, veri.php dosyasına doğrudan erişimi engellediğimde, flash dosyasının da bu engele takılması.

adres Safakizilkaya profilini göster
Safakizilkaya 14.09.2008 02:07:22
En iyi cevap mı ?

.htaccess ile bir çözüm bulamayacağım açık. Flash player istemci taraflı. .htaccess ile hangi prosedürü tanımlarsam tanımlayayım, flash player de bu prosedürün bir parçasına dönüşüyor.

User Agent – referer header’ları da bu proje için yeterince güvenli değil.

Bir kaç satır kodla HTTP bilgilerini manüple edip benim onay verdiğim agent’a ya da referer’e terfi edebilirler.

Üstelik, Flash player bu durumdan da olumsuz etkilenebilir.

Şu halde PHP dosyasının XML çıktısı üretme biçimini değiştirmek en akla yatkını.

Bunu da denedim. Encode ettim, Xml çıktıyı xslt ile manüple ettim. Ama ne yaparsam yapayım, Saf XML çıktısına bir biçimde erişebildim.

Erişememeliyim.

Şu anda gelebildiğim nokta, "Content-type xxx/xxx" yöntemi ile php dosyasının XML çıktısını okunamaz hale getirmek.

Erişim hala var ama en azından XML çıktı okunamıyor. Tabi hiç okunamıyor değil, biraz uğraşınca okudum. Demek ki elin oğlu-kızı da okuyabilir.

Bakayım. Stabil ve tekniğine uygun bir çözüm bulursam paylaşacağım.

Yoksa XML prosesini projeden sepetleyeceğim. Sadece mysql, php, flash kalacak.

Ya da toptan projeyi sepetleyeceğim. Sadece ben kalacağım.

adres scraby profilini göster
Murat Aktaş 14.09.2008 05:20:04
En iyi cevap mı ?

safa bey, ne diyeyim :) çıkmaz sokakta kalmış gibisiniz. yapılabilecek herşeyide yapmışsınız. eğer bir çözümünü bulursanız burayada yazın lütfen.

ancak her halükarda maalesef ulaşım olacaktır :|

adres Proclus profilini göster
Veli Süngütay 14.09.2008 18:55:14
En iyi cevap mı ?

Genelde multiplayer oyunlarda bu tip sorularla karsilasiyoruz Safa yapmak istedigin islemi yapamazsin htaccess ya da baska bir yontemle.

Oncelikle AMFPHP kullanalim, remoting yapalim boylelikle bir parca daha kapali bir sistem elde ederiz.

Bazi durumlarda SWF nin icine application key koyariz. Bu key ile ornegin remoting’de server tarafiyla konusuruz, bu key de arada bir degisir ve belki shared object icine yazilabilir. Her requestte bu key server’a iletilir. Yani bir nevi session id gibi bir sistem ama sadece veri.php nin sahibinin ve server’inin bilecegi bir key bu.

Client tarafina gonderilen hemen hic bir bilginin guvenlik garantisi olmuyor. Sadece cesitli katmanlar koyabiliriz. Iste key, session_id, swf obfuscate, SWF Shared Object’e gomulen bilgiler,… Hepsi cozumlenebilir client tarafindan eger ugrasilirsa.

adres Safakizilkaya profilini göster
Safakizilkaya 14.09.2008 23:14:39
En iyi cevap mı ?

İlginize teşekkür ederim. Veriyi php’de encrypt eden, Flash’ta ise decrypt eden (ya da tersi) bir yöntem üzerinde yoğunlaşmaya karar verdim. Tabi diğer katmanları da kullanacağım.

Eğer sonuç iyi çıkarsa, tüm kainata yansıtırım.

Eğer sonuç yamalı bohça olursa, utanırım, yansıtamam:)

Tekrar teşekkürler.

Not: Forumları filan tararken, hani damdan düşmüş bir başkası var mıdır diye; kendi mesajımla karşılaştım talihin garip bir cilvesi işte..

Meğer ben 2 yıl önce de bu mevzuya takmışım. üstelik, oradaki mesajımda Ben Forta ile ColdFusion’a da amma kızmışım. Niye paralı diye.. İnsan bir arpa boyu olsun yol alır be.

Link şurada:adobeturk-flashta-veritabanı-işlemleri

adres zehradoruk profilini göster
Zehra Doruk 15.09.2008 00:13:08
En iyi cevap mı ?

Muhtemelen encript / decrypt’i ve remoting ‘i yöntem olarak hesaba katmışsındır diye ses etmemiştim. Bak şöyle bir link var yardımcı olur belki:

Sending variables from flash to PHP and back.

Bir de şu kitap oldukça güncel, sonrası için faydalı olabilir:

Flash and PHP Bible – Matthew Keefe

Coldfusion konusuna gelince, bu işler CF ile o kadar kolay ki, coldfusion component’larını (CFC) flash içerisinde sanki bir actionscript nesnesi gibi çağırabiliyorsun mesela…

Bence geç kalmış sayılmazsın… ;)

adres Safakizilkaya profilini göster
Safakizilkaya 15.09.2008 01:15:41
En iyi cevap mı ?

@Zehra Doruk

Linkler için teşekkürler.

enc/decr olayından kaçalım dedik:)

Veritabanından elde ettiğimiz XML ormanı orman değil, tam bir cangıl. Veritabanını tasarlayan insanlar(lar) belki de artık yaşamıyorlar. Gelen bir tablo açmış, giden bir kategori eklemiş. İlişkisel veritabanı kavramı bu olayda bariz bir biçimde "çelişkisel veritabanı" na dönmüş.

Hazır bir enc/decr kütüphanesiyle küçük bir test yaptık, cangılda kaybolduk. White space sorunları, hex/binary uyumsuzlukları baş gösterdi. Flash decr edilmiş veriyi gereği gibi işleyemedi. Tabi, küçük bir testti. Uğraşıp sorunsuz bir hale getirmek ve bu yöntemi benimsemek en doğrusu olacak.

Bakalım.

Bir -iki gündür ateşlendim çünkü termin var. Ve biz henüz "<?" bile demedik.

CF platformu şu aşamada zor. Ajansın 2 sunucusu var. biri Unix diğeri Windows. Windows fiziki barınıyor ve burada. Unix ise sanal.

Fiziki olan, ASP’ci müşterilerimize tahsis edildi. Var böyle müşteriler. Koskoca genel müdür ASP olsun deyince, bize susmak düşüyor. "Sen paradan bahset, ASP de yaparız DSP de" diyoruz.

Buraya CF kuramayız, hem maliyetli, hem de talep yok. Talebi yaratalım, eyvallah ama PHP’ye bile "forum scripti" gözüyle bakan IT müdürleri ile muhatabız. Maaşallah Ülkemizdeki IT’cilerin needeyse tamamı birer Microsoft havarisi. Piyasa, ne yapalım..

Dışardaki sanal olan ise, küçük müşterilerimize dönük. 5-10 sayfadan ibaret, dinamik içeriği minimum seviyelerde olan "hakkımızda" siteleri yani.

Oraya CF kurulabilir. sanal pakette böyle bir opsiyon var ama etkin değil. Dur bakalım, kuracağız bu gidişle.

Sizlere tekrar teşekkür ederim, başladığımız yerdeyiz ama, kendi payıma ufuk açıcı bir süreç oldu.

aç-kapa Bu Yazıyı Tutanlar

yeni üyelik | şifremi unuttum

aç-kapa Toplantı Kahraman ve need4code.com Projesi Connect Toplantısı

Kahraman ve need4code.com Projesi Connect Toplantısı

Selam arkadaslar, Programlama ile uğraşanların hayatlarını kolaylaştıracak desktop ve web tabanlı ortak iki proje ile ilgili 3. toplantımızı 3Aralık...
Kategori: Toplantı

aç-kapa Yarışma Fikir10000 Dijital Pazarlama Fikir Yarışması

Fikir10000 Dijital Pazarlama Fikir Yarışması

ADTECH tarafından düzenlenen Fikir10000 yarışmasına; dijital pazarlama ile ilgili size ait olan fikrinizle katılabilir ve 10.000 YTL’lik birinci...
Kategori: Yarışma

aç-kapa Yarışma 7Dx Demoscene Party

7Dx Demoscene Party

2002 yılından beri amatör bilgisayar kültürü ile ilgilenen insanları bir araya getirmeyi hedefleyen 7DX parti serisinin bu seneki ayağı olan 7D8 Demo ...
Kategori: Yarışma

aç-kapa Eğitim Türkiye'de İnternet Konferansı - Internet Teknolojileri Derneği -22-23 Aralık ODTÜ

Türkiye'de İnternet Konferansı - Internet Teknolojileri Derneği -22-23 Aralık ODTÜ

Etkin Katılım Çağrısı Türkiye’de Internet ile ilgili grupları biraraya getirerek İnternet’i tum boyutlarıyla tanıtmak, gelistirmek, tartı...
Kategori: Eğitim

aç-kapa Konferans Bilgi Güvenliği ve Kriptoloji Konferansı

Bilgi Güvenliği ve Kriptoloji Konferansı

Önemli Tarihler: Etkinlik Tarihi : 24-26 Aralık 2008 Son Bildiri Gönderme Tarihi : 20 Ekim 2008 Bildiri Kabul Tarihi Bildirimi :...
Kategori: Konferans

üyeler Son Kahramanlar...

stats Kimler Burada? web stats

Son 1 dakika içinde MMIstanbul' da 368 (1 kayıtlı, 367 ziyaretçi) kullanıcı varmış. Login durumda olanlar aşağıda:

spinoza ...
coldfusion mysql ubuntu
 
sponsor adobe istanbul