通过URL中的参数推送CSS(路径)

问题描述 投票:0回答:1

我想为客户提供将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"  />');
}
?>

运行此程序不安全吗?为什么有任何建议和解释?

php css security
1个回答
0
投票

首先,要清楚,您不是在这里注入CSS规则,而是指向必须在某个地方托管的外部CSS文件的链接。 这真的是您想要的吗?

  • 关于XSS注入的风险,只要您将页面的正确编码作为第三个参数,就可以使用htmlspecialchars()
  • 但是,您至少应该对URL进行完整性检查(检查它以http://https://开头,并且在语法上有效;
  • 如果您的站点位于https上,则您只能接受以https开头的URL,否则您的浏览器将收到不安全的内容警告;

除此之外,风险应非常有限。如果链接未指向有效的CSS文件,则可能会将其忽略。唯一真正的烦恼是攻击者能够使您网站的访问者在所需的任何URL上触发GET请求。

话虽如此,我建议您允许用户提供CSS rules,而不是<style>标记内的内容。

© www.soinside.com 2019 - 2024. All rights reserved.