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.';
}
}
?>
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.