Wysiwyg html editor Mysql insert güvenlik
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.';
}
}
?>
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (3)
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.
@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.
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.