《php判断非法来源》
在PHP开发中,为了保障网站的安全和正常运行,我们需要对请求来源进行合法性判断。解决方案是通过检查HTTP头部信息、验证来源域名等方式来识别非法来源,并采取相应的措施。
一、检查HTTP头部信息
PHP可以从$_SERVER超全局数组获取HTTP头部信息。例如:
php
<?php
// 获取来源页面地址
$referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
// 假设合法的来源域名包含example.com
if (strpos($referer, 'example.com') === false) {
// 来源不合法时的操作,比如返回错误提示或禁止访问
echo "非法来源";
exit;
} else {
// 正常处理逻辑
}
二、使用白名单机制
可以建立一个来源域名的白名单,在程序中进行比对。
php
<?php
$whiteList = ['www.example1.com', 'www.example2.com']; // 白名单数组
$host = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '';
if (!in_array($host, $whiteList)) {
echo "非法来源";
exit;
} else {
// 执行后续代码
}
三、结合Token验证
在合法来源的页面中设置一个隐藏的Token值,当请求发送到服务器时,服务器端校验这个Token。
php
<?php
session<em>start();
// 在来源页面设置token
$</em>SESSION['token'] = md5(uniqid(rand(), true));
?>
<!-- 来源页面中的表单 --></p>
<input type="hidden" name="token" value="">
<!-- 其他表单元素 -->
<p>
然后在目标页面(target.php)进行验证:
php
<?php
session_start();
if (isset($_POST['token']) && hash_equals($_SESSION['token'], $_POST['token'])) {
// Token验证通过,执行正常逻辑
} else {
echo "非法来源";
exit;
}
通过以上几种思路,可以在PHP项目中有效地判断非法来源,提高系统的安全性。实际项目中可以根据具体需求选择一种或者多种方式组合使用。