csrf渗透测试与安全开发

<?php
	FLAG01
<html>
	<head>
		<title>show message</title>
		<meta charset='utf-8'>
	</head>
	<body>
		<h1>Communication Message</h1>
<?php
	include('conn.php');
	
	$referer=$_FLAG02['FLAG03'];
	$host=$_SERVER($referer);
	$host=$host['host'].';'.$host['port'];
	$web_host=$_SERVER['HTTP_HOST'];
	if($web_host != FLAG05{
		exit('nost allow.');
	}
	if(!isset($_SESSION['token'])){
		exit('error operation.');
	}
	else{
		$sql="select * from dcn.message";
		$result=mysqli_query($conn,$sql);
        while($row=mysqli_fetch_array($result)){
        echo '用户名:'.$row['username'].'<br>';
        echo '留言内容:'.'&nbsp;&nbsp'.FLAG06($row['info']);//去除标签
    }
?>
    }
<?php
	session_start(); // FLAG01: 添加 session_start() 以启用会话
?>
<html>
	<head>
		<title>show message</title>
		<meta charset='utf-8'>
	</head>
	<body>
		<h1>Communication Message</h1>
<?php
	include('conn.php');
	
	$referer = $_SERVER['HTTP_REFERER']; // FLAG03: 正确获取 HTTP_REFERER
	$host = parse_url($referer); // 使用 parse_url 来解析 Referer
	$host = $host['host'] . ':' . $host['port']; // 拼接主机名和端口号
	$web_host = $_SERVER['HTTP_HOST']; // 当前请求的主机名

	if ($web_host != $host) { // FLAG05: 如果当前主机和 Referer 主机不一致,退出
		exit('not allowed.');
	}

	if (!isset($_SESSION['token'])) { // 检查会话中的 token 是否存在
		exit('error operation.');
	} else {
		$sql = "SELECT * FROM dcn.message"; // SQL 语句
		$result = mysqli_query($conn, $sql);
		while ($row = mysqli_fetch_array($result)) {
			echo '用户名:' . $row['username'] . '<br>';
			echo '留言内容:' . '&nbsp;&nbsp' . strip_tags($row['info']); // 去除标签
		}
	}
?>
	</body>
</html>
  • FLAG01: session_start()
    需要启动会话,确保 $_SESSION 全局变量可用。

  • FLAG03: $_SERVER['HTTP_REFERER']
    使用 HTTP_REFERER 获取请求的来源 URL。

  • FLAG04:使用 parse_url 来解析 Referer

  • FLAG05: $web_host != $host
    比较当前服务器的主机名和来源 URL 的主机名,验证请求来源是否被允许。

  • FLAG06 strip_tags()
    该函数会移除字符串中的所有 HTML 和 PHP 标签,只保留纯文本。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值