下面的javascript做什么?
我很难理解以下javascript的功能。在一次实验课上接受了它,甚至对它进行了测试(或者至少尝试了一下,因为它不像其他学生那样对我有效,它一直要求我登录,但从未显示欢迎信息)。实验室是关于XSS攻击的,讲师告诉我们这个脚本可以被利用,我不知道怎么做 不要介意这些评论;我添加它们是为了在跟踪代码时帮助我理解下面的javascript做什么?,javascript,php,html,cookies,Javascript,Php,Html,Cookies,我很难理解以下javascript的功能。在一次实验课上接受了它,甚至对它进行了测试(或者至少尝试了一下,因为它不像其他学生那样对我有效,它一直要求我登录,但从未显示欢迎信息)。实验室是关于XSS攻击的,讲师告诉我们这个脚本可以被利用,我不知道怎么做 不要介意这些评论;我添加它们是为了在跟踪代码时帮助我理解 <html> <head> <title>Mobile code:: XSS cookie example </title>
<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>
移动代码::XSS cookie示例
函数checkCookie(){
//下面是用于此函数的变量的初始化
var lf=“\n”//下一行的字符(lf=换行符)
var CookieString=document.cookie;//可以通过document.cookie属性访问cookie
var CookieSet=CookieString.split(“;”);//此操作以分号分隔document.cookie。CookieSet将成为一个数组,其中包含为此域和路径设置的所有cookie。
var SetSize=CookieSet.length;
var厨具;
var ReturnValue=”“;//如果找不到cookie,则设置默认的空返回
var x=0;
对于(x=0;((x
无论如何,我们非常感谢您帮助解释这一点。最后,我希望我的英语没有那么差
编辑:嗯,哇。。为什么这会被否决。。?请求帮助/解释有那么糟糕吗???JavaScript与此无关。该漏洞是通过PHP进行的 用户输入(
$\u GET[“username”]
和$\u POST[“username”]
):
- 来自浏览器
- 可由其他网站(或电子邮件)通过链接或表单提供给浏览器
- 可以包含JavaScript
- 直接输出到页面上,无需消毒
我希望这能让你了解这里到底发生了什么。您似乎理解JavaScript ok,所以我不想赘述:)它似乎主要易受攻击,因为超级机密密码直接存储在客户端可用的cookie中,因此任何用户都可以访问或窃取它。在PHP部分显示
$cur\u username
,unescaped易受XSS攻击。如果将恶意链接共享为yourscript?username=
,则将执行
。您需要使用htmlspecialchars($cur\u username)
来缓解它。我猜注释描述了整个代码。你真正想了解的是什么。因为这似乎是一项实验室作业(计算机科学专业?),你能做的最好的事情就是去找你的教授,告诉他们你不懂。你可能不是唯一一个没有理解的学生,这将允许教授以不同的方式解释问题。我在大学时就这样做了,让我们的教授重新解释一些东西(确切地说是OOP中的接口)。正因为如此,我对接口的理解达到了我从未想过的程度:)非常感谢您的回复,但我仍然不完全理解,比如for循环中的行在做什么?这个检查功能是如何工作的?等等,我真的没有任何先验知识