У меня возникли проблемы с пониманием того, что делает следующий javascript. взял его в лабораторную сессию и даже протестировал (или, по крайней мере, пытался, поскольку он не работал со мной, как другие ученики, он продолжал просить меня войти в систему и никогда не показывать приветственное сообщение). лаборатория - это атаки XSS, и инструктор сказал нам, что этот сценарий может быть использован, и я не вижу, как ?.Что делает следующий javascript?
не против комментариев; Я добавил их, чтобы помочь мне понять, когда трассировка код
<html>
<head>
<title>Mobile code:: XSS cookie example </title>
<link rel="stylesheet" type="text/css" href="SecureM.css"/>
</head>
<body>
<script language="Javascript">
function checkCookie(){
//Here is the initialization of variables to be used for this function
var lf = "\n"; //character for next line (lf = line feed)
var CookieString = document.cookie; //cookies are accessible through the document.cookie property
var CookieSet = CookieString.split(';'); //This splits document.cookie on semicolons. CookieSet becomes an array containing all cookies that are set for this domain and path.
var SetSize = CookieSet.length;
var CookiePieces;
var ReturnValue=""; //set default empty return if no cookie found
var x = 0;
for (x = 0; ((x < SetSize) && (ReturnValue == "")); x++){
CookiePieces = CookieSet[x].split('=');
if (CookiePieces[0].substring(0,1) == ' '){
CookiePieces[0] =
CookiePieces[0].substring(1, CookiePieces[0].length);
} //end if statement
if (CookiePieces[0] == "superSecretPassword"){
ReturnValue = CookiePieces[1];
} //end if statement
} //end for loop
return ReturnValue;
} //end checkCookie() function
if (checkCookie() == ""){ // no cookie found, relocate to login.php
window.location.href="login.php";
}
</script>
<?
if (isset($_GET["username"])){
$cur_username = $_GET["username"];
}
else if (isset($_POST["username"])){
$cur_username = $_POST["username"];
}
else if (isset($_COOKIE["username"])){
$cur_username = $_COOKIE["username"];
}
else{
$cur_username = "No Name";
}
echo "<strong>LOGIN SUCCESSFULL!</strong><br/><br/>";
echo "<strong>Thank you, ".$cur_username." your information have been updated</strong>";
//
?>
</body>
</html>
во всяком случае, помощь в объяснении это очень ценится. наконец, я надеюсь, что мой английский не был так уж плох.
отредактировал: um, wow .. почему это проголосовали вниз ..? так плохо спросить о помощи/объяснении ??
Он, кажется, в основном уязвим, поскольку пароль суперсекретного хранится непосредственно в файле cookie, доступном на стороне клиента, поэтому любой пользователь может получить к нему доступ или украсть его. – adeneo
Отображение '$ cur_username' в части PHP, unescaped уязвим для XSS. Если вредоносная ссылка была разделена как 'yourscript? Username =', то '' будет выполнена. Вам нужно будет использовать 'htmlspecialchars ($ cur_username)', чтобы смягчить его. –
Я думаю, что комментарии описывают весь код. Что вы действительно хотите понять. –