我目前正在构建一个管理面板。有一个页面,其中包含HTML的文件被加载到HTML编辑器(TinyMCE)中,并保存到加载的相同文件中(以保存更改)。
该文件只是一个包含动态链接的页面,这些链接将与管理面板交换。如果所有这些页面都是相同的,那么我将简单地将核心值保存到数据库中,然后加载特定的部分,然而,情况并非如此,因为模板有许多变体,很少有两个是相同的。
因此,我想要一个客户端可以用来编辑这些页面的应用程序。我该如何以一种安全的方式保存这些文件,从而消除任何恶意行为?
谢谢。
在将html存储在数据库中时对其进行消毒通常是一个坏主意,如果您弄错了并且损坏了数据,则无法返回,一旦您修复了任何错误,您将不得不让用户重新输入内容。你可能认为你已经涵盖了所有基础但总会有用户说"当我这样做...."
相反,只要将数据存储在数据库中(显然是过滤sql注入),你不希望Mr O'reilly破坏你的数据库。
你需要在从db出来的路上过滤内容,你怎么做取决于你的情况。
如果你只是希望你的用户存储文本,那么使用htmlspecialchars
就足够了,这将改变<
为<
,等等
然而,如果你希望你的用户能够使用标签,那么条带标签将是更合适的
如
$allowable_tags = array(
'<p>',
'<h1>',
'<h2>',
'<h3>',
'<strong>',
'<em>',
);
$content = $db->get($page_id);
echo strip_tags($content,implode('',$allowable_tags));