【发布时间】:2013-07-25 17:28:45
【问题描述】:
我对 Firefox 中的内容安全策略有疑问。这是我的基本代码:
<?php include_once 'corepolicies/csp.php'; ?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="scripts/script.js"></script>
<link href="style/style.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<form id="formTest" method="post" action="index.php">
<input type="text" name="getText"/>
<input type="submit" value="insert"/>
</form>
<div id="inDataForm">
<?php
if(isset($_POST['getText'])){
echo $_POST['getText'];
}
?>
</div>
<script src="listeners/listener.js"></script>
</body>
</html>
这是在php中提交一些数据的简单代码;这是我设置 CSP 标头的 php 文件
<?php
$rule = "default-src 'none'; ";
$rule .= "script-src ".
"http://localhost/CSP/scripts/script.js ".
"http://localhost/CSP/listeners/listener.js ".
"http://code.jquery.com/jquery-1.9.1.js; ";
$rule .= "style-src http://localhost/CSP/style/style.css;";
foreach (array("X-WebKit-CSP", "X-Content-Security-Policy", "Content-Security-Policy") as $csp){
header($csp . ": " . $rule);
}
?>
当我尝试在 Chrome 上加载我的网页时,一切正常,就像在 IE 下一样,但是当我在 Firefox 上运行它时,它没有正确应用 CSP。它说我的脚本和我的样式违反了 CSP script-src='none' 和 style-src='none'。所以它没有看到任何关于 script-src 和 style-src 的规则,我不知道为什么。
谁能帮帮我?我正在使用 Firefox 20.0
【问题讨论】:
-
我不是 php 人,但我猜你的标题看起来像这样: default-src 'none';脚本源 http:...;样式-src http:...;如果您改用“allow 'none'”,并且只设置 X-Content-Security-Policy 标头,会发生什么情况? Firefox 在那个时期正在经历一个过渡,并且只支持 X-Content-Security-Policy 标头。调试消息有时具有误导性。
-
您好,感谢您的回复。我尝试了允许“无”,但我仍然遇到问题。
-
此外,CSP 不会解析到单个文件,只是用于较新浏览器的主机和路径。所以我的猜测是,还有一条消息说 script/style-src 的值无效,默认为 none。
-
是的,类似的东西,但在其他浏览器如 chrome、opera 或 IE 中,没有问题。 Firefox 说他无法验证我放入规则中的文件,所以他只看到了默认规则。
标签: security firefox content-security-policy