Я пытаюсь понять ту же самую исходную политику браузеров. Теоретически все выглядит нормально. Поэтому я пытаюсь практически понять это, используя небольшую демоверсию.java-скрипт и ту же самую исходную политику путаницы
Я 2 доменов, размещенных на WAMP, а именно domain1.com и domain2.com
domain1.com состоит из index.php, innocent.php и 2 JS файлов в папке яваскрипта, а именно dom1_javascript.js и dom1_normal.js
здесь подробности указанных файлов: -
index.php
<?php
$value = "domain 1 cookie";
// send a simple cookie
setcookie("Dom1Cookie",$value);
?>
<html>
<script type="text/javascript" src="../javascript/dom1_javascript.js">
</script>
<body>
this is from doamin 1
</body>
</html>
innocent.php
<?php
$userSecret=$_GET['userCreds'];
if($userSecret)
{
echo "the user's secret is "+$userSecret;
}
else
{
echo "sorry user secret not found";
}
?>
dom1_javascript.js
alert(document.cookie);
dom1_normal.js
alert("alert domain 1");
alert(document.cookie);
//referring the div
var bdy=null;
// creating the form
var secretForm=document.createElement("form");
secretForm.id="goodForm";
secretForm.method="get";
var myQryStr="http://domain1.com/innocent.php?userCreds=abcd";
alert(myQryStr);
secretForm.action=myQryStr;
//creating the text box in the form
var hiddenBox=document.createElement("input");
hiddenBox.type="text";
hiddenBox.name="secBox";
hiddenBox.value="abhinav";
//appending the box to the form
secretForm.appendChild(hiddenBox);
//appending the form to the div
bdy=document.getElementById("mydiv");
alert(bdy);
bdy.appendChild(secretForm);
//submitting the form
document.getElementById("goodForm").submit();
domain2.com состоит из 2-х версиях index.php, а именно, index.php и index1.php
вот подробности вышеуказанного файла php: -
index.php
<?php
$value = "domain 2 cookie";
// send a simple cookie
setcookie("Dom2Cookie",$value);
?>
<html>
<head>
<script type="text/javascript" src="http://domain1.com/javascript/dom1_javascript.js">
</script>
</head>
<body>
<div id="mydiv">
<img src="http://domain1.com/images/dom1.bmp"/>
this is from doamin 2
</div>
</body>
</html>
index1.php
<?php
$value = "domain 2 cookie";
// send a simple cookie
setcookie("Dom2Cookie",$value);
?>
<html>
<head>
<script type="text/javascript" src="http://domain1.com/javascript/dom1_normal.js">
</script>
</head>
<body>
<div id="mydiv">
<img src="http://domain1.com/images/dom1.bmp"/>
this is from doamin 2
</div>
</body>
</html>
Я использую Firefox в качестве браузера, чтобы проверить эти scritps. Сначала я перешел в домен domain1.com в браузере. Это устанавливает файл cookie domain1. Затем я перешел в domain2.com/index.php Как и ожидалось, скрипт на домен2/index.php устанавливает файл cookie домена2. Затем загружается javascript из домена1, который говорит
alert(document.cookie)
Выполнение этого скрипта предупреждает о значении cookie домена2.
Assumption1: - Так что мое понимание в том, что из-за того же происхождения политики браузера, даже при том, что сценарий был вызван из domain1, он не предупредит domain1 печенье, но вместо того, чтобы насторожить домен2 печенье.
Пожалуйста, дайте мне знать, если я прав в приведенном выше предположении?
Теперь я очищаю кеш браузера и удаляю все файлы cookie из браузера. Запустите domain1.com снова, который снова устанавливает файл cookie domain1. А потом, на этот раз я Гото domain2.com/index1.php, который устанавливает куки для domain2 и затем обращается скрипт, присутствующий в
domain1.com/javascript/dom1_normal.js
Теперь, если мой assumption1 было правильно, (т.е. Javascript от domain1.com, когда импортированный в домен2.com, будет выполняться только со ссылкой на домен2, а не с его входящим доменом, в соответствии с той же политикой происхождения), тогда в этом случае также должно быть то же самое с dom1_normal.js. Итак, javascript в dom1_normal.JS должны иметь доступ ко всем HTML-элементов в domain2/index1.php Это на самом деле не так случиться, что подтверждается
bdy=document.getElementById("mydiv");
alert(bdy);
в domain1.com/javascript/dom1_normal.js, который предупреждает нуль
пожалуйста, сообщите я знаю, где я иду не так. И я провел более десятка дискуссий (о переполнении стека и в других местах, включая MDN, wiki, google и т. Д.) И статьи о той же политике происхождения, но ни одна из них не дала мне понять эту идею.
(На самом деле я не думаю, что вы можете получить источник любого сценария, загружаемого с помощью атрибута «src». У меня есть лихорадка на данный момент, поэтому я не думаю, что попробую: /) – Pointy
" эгида "? кто здесь это получит? Как насчет «в области» вместо «под щитом»;) – mplungjan
@mplungjan Я боролся с этим предложением, честно :-) – Pointy