在我的search.php
页面上,用户可以按城市/位置搜索内容,通过JQuery / AJAX搜索到名为search_data.php
的页面,结果在{{1}上返回}。
现在这就是我正在做的事情:
在search.php
我有这个:
search.php
$_SESSION['verid'] = randomid(12);
$_SESSION['verkey'] == randomid(12);
是一个生成12个随机字符的函数。这两个会话变量与jquery randomid
请求一起作为javascript变量发送(名为“vuid”和“vukid”)
在$.post
我有这个:
search_data.php
使用这种方法,它会阻止某人手动浏览if ($_POST['vuid'] != $_SESSION['verid']) {
header('Location: http://mysite.com/');
die();
} else {
if ($_POST['vukid'] != $_SESSION['verkey']) {
header('Location: http://mysite.com/');
die();
} else {
//both keys correct. process Jquery data.
}
尝试做恶意事情(我认为?),它只允许Jquery访问它。
我的问题是,我在这里看不到某种“漏洞”吗?这是保护这类网页的好方法吗?
答案 0 :(得分:3)
任何人都可以模拟任何HTTP请求,因此此方法不可靠。在这种情况下,他可以伪造第一个HTTP请求来启动会话,存储PHP脚本返回的cookie并重新使用它来伪造第二个HTTP请求,该请求是通过cookie和他从第一个请求获得的验证密钥传递的。
答案 1 :(得分:1)
什么样的恶意事物?我猜是search_data.php链接到数据库?最好是保护该脚本,特别是保护所需的最少访问量。您可以使用对search_data.php上的表只具有读访问权限的数据库用户,这样可以稍微降低安全威胁。
底线是恶意用户可能造成的更大潜在损害,您需要的保护页面和资源越多。
OWASP是学习潜在安全威胁以及如何减轻其威胁的重要资源。