我想为客户提供将CSS插入iframe中以更改颜色等的可能性。
我的守则是这样做的好方法吗?我已经用htmlspecialchars包装了“ GET”,以防止注入或关闭标签,即URL中的?>以运行随机的新代码。
<?
$css_url = null;
if ( isset($_GET["css_url"]) ) {
$css_url = "". htmlspecialchars($_GET["css_url"]);
}
if ($css-url != null && strlen($css_url) > 0) {
echo('<link href="'.$css_url.'" rel="stylesheet" type="text/css" />');
}
?>
运行此程序不安全吗?为什么有任何建议和解释?
首先,要清楚,您不是在这里注入CSS规则,而是指向必须在某个地方托管的外部CSS文件的链接。 这真的是您想要的吗?
http://
或https://
开头,并且在语法上有效;https
上,则您只能接受以https
开头的URL,否则您的浏览器将收到不安全的内容警告;除此之外,风险应非常有限。如果链接未指向有效的CSS文件,则可能会将其忽略。唯一真正的烦恼是攻击者能够使您网站的访问者在所需的任何URL上触发GET
请求。
话虽如此,我建议您允许用户提供CSS rules,而不是<style>
标记内的内容。