+ Yanıtla
Toplam 3 sonuçtan 1 ile 3 arası olanlar

Konu Başlığı: PHP - Dosya Fonksiyonları ve Guvenlik hakkinda bir soru.

  1. #1

    PHP - Dosya Fonksiyonları ve Guvenlik hakkinda bir soru.

    Merhaba,

    bir PHP sistemi uzerinde calisiyorum. PHP konusunda biraz yeni sayilirim. Bu yuzden bu konuda bilgi ve tecrube sahibi kisilerden bir yardim istiyorum. Simdi konuyu soyle ozetleyim;
    makinemde /home/kullanici/ dizininde asd.txt adinda bir dosyam var. Bunu asagidaki kodlar ile acip gerektiginde degisiklip yapip save tusuna basinca kaydetmesi gerekiyor. Bunu asagidaki kodlar ile cok guzel bir sekilde yapiyorum. Fakat isin guvenlik boyutu sıfır. Yani bu kodu calistirdigimda ekrana gelen textarea da asd.txt nin icerigini goruyorum. Degisiklik yaparken en son satıra
    </textarea> <? falan filan kod ?> seklinde yada <marquee>asdad</marquee> yazdıgımda bunları kodların icindeymis gibi calistiriyor. Buda cok ciddi bir guvenlik tehtidi olusturuyor. Bunu nasil engelleyebilirim. Bu koda kucuk bir ekleme yapabilirseniz yada bana bir kaynak, fikir verebilirseniz cok sevinirim. Simdiden cok tesekkur ederim.

    Saygılar..

    Bahsi gecen kod:
    Kod:
    <HTML>
    <body>
    <?PHP
    $dosya = "/home/kullanici/asd.txt";
    $form = $_POST["form"];
    $degisiklik = $_POST["degisiklik"];
    $yazilar = @implode('',file($dosya));
    ?>
    <center>
    <?PHP if ($form == "SAVE") {
    $kaynak = fopen($dosya,"w+");
    fwrite($kaynak, stripslashes($degisiklik));
    fclose($kaynak);
    echo "<b>Ayarlar Kaydedildi.</b>";
    }
    echo '<form action="dzn.PHP" method="post">
    <textarea  name="degisiklik">'; echo stripslashes($yazilar); echo '</textarea>
    <br><input type="hidden" value="'; echo $dosya; echo '" name="dosya">
    <input type="submit" value="SAVE" name="form"></form>'; 
    ?>
    </center>
    </body>
    </HTML>
    

  2. #2

    Re: PHP - Dosya Fonksiyonları ve Guvenlik hakkinda bir soru.

    Burada senin yapman gereken HTML kodlarını etkisiz hale getirmek. Bunun için PHP nin htmlspecialchars() komutu işini görecektir. PHP nin (www.php.net ) kendi sitesinde ki örnek şöyle:

    Kodlar:
    Kod:
    <?PHP
    $new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
    echo $new; // &lt;a href='test'&gt;Test&lt;/a&gt;
    ?>
    
    Asıl HTML kodlarının dönüştüğü hal
    HTML Kodu:
     &lt;a href='test'&gt;Test&lt;/a&gt; 
    Ekran görüntüsü
    HTML Kodu:
    <a href='test'>Test</a> 
    Burada htmlspecialchars komutuna verdiğin ifade içinde komut bulduğu özel kararkterleri etkisiz hale getiriyor. Bu şekilde dosyaya HTML kodları etkisiz hale geldiği için bir işe yaramıyor. Bu söylediğin <? ?> içinde geçerli. Bunu tersine çevirmek için htmlspecialchars_decode("işlem yapılacak ifade") komutunu kullanıyorsun.

    Bu şekilde HTML kodlarını etkisiz hale getirebilirsinz. Yani kullanıcı dosyaya ne yazdıysa aynen onu görecektir. Tabi ifade içinden HTML kodlarını tamamen kaldırmanında bazı yolları var. Ancak onları tam hatırlayamadım. Ama zannedersem bu komut işini görecektir.

  3. #3

    Re: PHP - Dosya Fonksiyonları ve Guvenlik hakkinda bir soru.

    drkloji,
    vermiş olduğun bilgi için çok teşekkür ederim.

    Saygılar.

+ Yanıtla

Bu konu başlığı için etiketler

Mesaj Seçenekleri

  • Yeni başlık açamazsınız
  • Cevap yazabilirsiniz
  • Dosya ekleyemezsiniz
  • Mesajlarınızı değiştiremezsiniz