v2.5.2
Giriş yap

Wysiwyg html editor Mysql insert güvenlik

themonster
650 defa görüntülendi

Dostlar merhaba wysiwyg html editorden gelen içeriği veritabanına ekletme yapıyorum.

Kafama takılan sorulardan birisi güvenlik açığı xss olur mu ?
Diyelim ki birisi panele erişim sağladığında script ile alert vs verdirebilir mi?
Nasıl bir güvenlik önlemi almalıyım insert kodları şu şekilde;

<?php
function mb_trim($string)
{
    $string = preg_replace("/(^s+)|(s+$)/us", "", $string);
    return addslashes(htmlspecialchars($string));
}

// içerik gösterme fonks.
function contentCorrection ($variable)
{
    $variable = nl2br($variable);
    return $variable;
}


if ( $_POST )
{
    // insert işlemi
    $title          = strip_tags(mb_trim($_POST['title']));
    $announcement   = $_POST['announcement']; // to-do filtre
    $add = DB::insert("INSERT INTO `announcements` (`title`, `content`, `seen_user_ids`) VALUES (?, ?, ?)",
        [$title, $announcement, "[]"]);

    if ($add)
    {
        unset( $JSON['error']);
        $JSON['message'] = 'Başarıyla eklendi.';
        $JSON['redirect'] = '/announcements/list';
    } else {
        $JSON['message'] = 'Teknik bir hatadan ötürü eklenemedi.';
    }
}
?>
Cevap yaz
Cevaplar (3)
bgokcol
1418 gün önce

Tayfun hocanın dediği gibi saldırgan panele giriş yaptıktan sonra XSS için endişelenmeye gerek yok. Ama yine de buna çözüm yapmak istiyorum derseniz şöyle bir kütüphane var:
http://htmlpurifier.org/

Bu kütüphane sayesinde XSS kodlarını temizleyebilirsiniz POST edilen veriden.

themonster
1417 gün önce

@tayfunerbilen; Yani panele erişim sağlamak konusunda şüphem yok fakat yine güvenlik açısından ne gibi bir güvenlik almam gerektiğini merak etmiştim :)
@bgokcol; İnceliyorum hocam teşekkürler.

tayfunerbilen
1418 gün önce

birisi panele erişim sağladığında eğer böyle bir şey olurs xss'den daha büyük probleminiz var demektir :)
bu işlemi sadece panelden yapıyorsanız x bir kontrolere ihtiyacınız yok, kullanıcıdan bilgi alırken ya strip_tags() ile belli html'leri aktif edersiniz ya da markdown kullanırsınız tamamen html'den bağımsız ya da hiç html göstermezsiniz.