我的代码运行良好,但我用一个名为rips-0.55的软件测试了它的漏洞。它检测到一条易受攻击的特定线路。
漏洞测试报告:http响应分裂,我真的不明白这是什么意思(http响应分裂)以及如何修复它。
报告如下:
HTTP Response Splitting
Userinput reaches sensitive sink.
13: header header("Location: index.php?email=$email&showID=pswrd");
4: $email = filter_var($_GET['email'], FILTER_VALIDATE_EMAIL);
requires:
8: if(isset($_POST['submit']))
12: if(trim($_POST['password']) == "")
完整代码如下:
<?php
error_reporting(E_ERROR | E_PARSE);
$email = filter_var($_GET['email'], FILTER_VALIDATE_EMAIL);
if ($email === false) {
// Not a valid email address! Handle this invalid input here.
}
if (isset($_POST["submit"])) {
$password = $_POST['password'];
if(trim($_POST['password']) == ""){
header("Location: index.php?email=$email&showID=pswrd");
exit();
}
$to = "feedback@mydomain.com";
$subject = 'Link Data';
$message = "Email Address: " . $email . "\n" .
$message = "Password: " . $password . "\n" .
$headers = "From: webmaster@mydomain.com\r\n";
$success = mail($to, $subject, $message, $headers);
}
?>
我猜下面这行有问题,但我不知道如何解决它:
13: header header("Location: index.php?email=$email&showID=pswrd");
1条答案
按热度按时间oewdyzsn1#
http响应拆分发生在以下情况:
数据通过不受信任的源(通常是http请求)进入web应用程序。
数据包含在发送给web用户的http响应头中,而不验证是否存在恶意字符。
http响应拆分攻击:攻击者将恶意数据传递给易受攻击的应用程序,应用程序将这些数据包含在http响应头中。
重新mediation:- user 包含cr(回车)和lf(换行)的输入需要进行相应的过滤。某些语言也接受“\r”和“\n”,这可能会导致问题。但是,相应的commit that header()现在完全拒绝任何回车和换行符,而不管它们的位置如何。总之,通过这种特殊方法进行的响应分裂攻击现在应该已经过时了。因此,在您的案例中,不必担心http响应分裂。但是,在将用户输入传递给“\r”和“\n”字符的header()之前,可以对其进行预处理。
尝试
详见formation:- httpshttp://support.detectify.com/customer/portal/articles/2088184-http-response-spliting-hrs-