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