Nasıl HTML Arıtma kullanıcı gönderilen verileri filtrelemek için entegre mi?

2 Cevap php

Ben kullanıcıların verileri toplayan bu komut dosyası var ve ben HTML Purifier ile (örneğin XSS ve SQL enjeksiyonu gibi) kötü niyetli kod için kendi verilerini kontrol etmek istiyorum, ama nasıl benim PHP form gönderme senaryosuna eklerim?

İşte benim HTML Arıtma kodu:

 require_once '../../htmlpurifier/library/HTMLPurifier.auto.php';

 $config = HTMLPurifier_Config::createDefault();
 $config->set('Core.Encoding', 'UTF-8'); // replace with your encoding
 $config->set('HTML.Doctype', 'XHTML 1.0 Strict'); // replace with your doctype
 $purifier = new HTMLPurifier($config); 

 $clean_html = $purifier->purify($dirty_html);

İşte benim PHP form gönderme kodu:

if (isset($_POST['submitted'])) { // Handle the form.

    $mysqli = mysqli_connect("localhost", "root", "", "sitename");
    $dbc = mysqli_query($mysqli,"SELECT users.*, profile.*
                                 FROM users 
                                 INNER JOIN contact_info ON contact_info.user_id = users.user_id 
                                 WHERE users.user_id=3");

    $about_me = mysqli_real_escape_string($mysqli, $_POST['about_me']);
    $interests = mysqli_real_escape_string($mysqli, $_POST['interests']);



if (mysqli_num_rows($dbc) == 0) {
        $mysqli = mysqli_connect("localhost", "root", "", "sitename");
        $dbc = mysqli_query($mysqli,"INSERT INTO profile (user_id, about_me, interests) 
                                     VALUES ('$user_id', '$about_me', '$interests')");
}



if ($dbc == TRUE) {
        $dbc = mysqli_query($mysqli,"UPDATE profile 
                                     SET about_me = '$about_me', interests = '$interests' 
                                     WHERE user_id = '$user_id'");

        echo '<p class="changes-saved">Your changes have been saved!</p>';
}


if (!$dbc) {
        // There was an error...do something about it here...
        print mysqli_error($mysqli);
        return;
}

}

2 Cevap

if ($dbc == TRUE) {
        //add the stuff you want to clean here.
        $about_me = $purifier->purify($about_me);
        $interests = $purifier->purify($interests);

        $dbc = mysqli_query($mysqli,"UPDATE profile 
                                     SET about_me = '".mysql_real_escape_string ($about_me)."', interests = '".mysql_real_escape_string ($interests)."' 
                                     WHERE user_id = '$user_id'");

        echo '<p class="changes-saved">Your changes have been saved!</p>';
}

Ayrıca kullanarak DB girmeden önce verileri kaçan mysql_real_escape_string() düşünmek gerekir

Ayrıca mysql_real_escape_string ($ temizleyici-> saflaştırmaktır ($) çıkarları) birleştirebilirsiniz, ama daha okunabilir hale getirmek için birleştirmek değildi.

Ben HTML Arıtma kullanarak XSS ve SQL enjeksiyonu gibi kötü niyetli kod için kendi verilerini kontrol etmek istedim

Bu HTML Arıtma içindir ne değil.

HTML Arıtma Eğer kullanıcı bir sayfa eklenmek üzere HTML fiili [X] göndermek için izin gerektiğinde içindir, ama bunları HTML tüm potansiyel tehlikeli özelliklerine tam erişime sahip istemiyorum.

Bu doğru kullanımı için not bir alternatiftir htmlspecialchars bir HTML sayfası içine bir metin dizesini çıkış zaman. Metin dizeleri değil, HTML biçimlendirme olmak girişini kullanmak istediğiniz durumlarda büyük çoğunluğunda, bu < ve &lt; için & işaretleri kaçmak ve istiyorum &amp;, biçimlendirme gibi davranmasını ve bu biçimlendirme 'temiz' yapmak amacıyla onları cendereye değil.

Ayrıca SQL enjeksiyon karşı hiçbir şey yok. Sen mysqli_real_escape_string kullanmak veya Parametrelenmiş sorguları gitmeye devam etmeliyiz.