在我的项目中,我需要允许其他人向我的脚本发送ajax请求。因此,外部请求可能来自其他网站和域,也可能来自浏览器扩展 我在脚本的顶部添加了这两行,让他们这样做:
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST');
现在我的问题是:这里有任何我错过的安全考虑吗?这个简单的解决方案会产生严重问题吗? 如果是这样,什么是更好的解决方案?
感谢您的回复。
答案 0 :(得分:19)
如上所述,任何人都可以随时向您的页面发送请求:因此您需要的主要安全问题是验证用户输入并仅显示可供公众使用的信息。但这适用于所有脚本。
您需要关注的两个主要问题(在验证用户输入之后)是:
<?php
header('content-type: application/json; charset=utf-8');
$data = array(1, 2, 3, 4, 5, 6, 7, 8, 9);
echo $_GET['callback'] . '('.json_encode($data).')';
?>
要记住的其他因素:
答案 1 :(得分:1)
像zerkms所说,如果他们只是“去”你的php页面,他们将能够看到它回声的任何东西。 如果可能(不确定),它也会允许不受欢迎的人甚至在本地主机上创建自己的表单,并通过AJAX提交它们以获得他们想要的响应。如果你没关系,信息含糊不清......然后我认为它是“安全的”。这不是获取/传输敏感信息的方法
答案 2 :(得分:0)
private function set_headers() {
header("HTTP/1.1 ".$this->_code." ".$this->get_status_message());
header("Content-Type:".$this->_content_type);
header("Access-Control-Allow-Origin: *");
}
答案 3 :(得分:0)
这对我来说很完美。
WeekFields wf = WeekFields.of(Locale.forLanguageTag("ar-TN"));
int weekYear = 2020;
// The number of weeks is the same as the week number of the last week in the week year.
// So find a date in that last week and query its week number.
// The way to find a date in the last week is:
// find a date in week 1 of the following year and subtract 1 week.
LocalDate aDateInWeek1OfTheFollowingYear = LocalDate.of(weekYear + 1, Month.FEBRUARY, 1)
.with(wf.weekOfYear(), 1);
LocalDate aDateInLastWeek = aDateInWeek1OfTheFollowingYear.minusWeeks(1);
int lastWeekNumber = aDateInLastWeek.get(wf.weekOfYear());
System.out.format("Week year %d has %d weeks.%n", weekYear, lastWeekNumber);