Эту проблему безопасности следует отнести к JavaScript. Как правило, сервер A настроен так, чтобы не позволять машине B в другом домене выполнять ajax на B для вызова ресурсов на сервере A. Вот простой пример угрозы безопасности:
Предполагая, что доступ к ajax возможен из домена, я могу написать ajax на своей машине для запроса ресурсов в различных веб-приложениях Google. Например, я сначала использую Firefox для изучения адресов и параметров большого количества ajax-запросов от GMail. процесс входа в систему, и я могу получить процесс проверки файлов cookie пользователя. Затем напишите js, чтобы получать файлы cookie других пользователей в разных доменах, чтобы вы могли обойти пароль пользователя GMail и войти в почтовые ящики GMail других людей
с междоменными ограничениями ajax
.действительно ли невозможно использовать ajax для нарушения доступа к домену?
Это правда, что ajax не может сломать домен, но мы можем реализовать это через ретрансляцию. Так называемый принцип прокси очень прост. Вы можете настроить свой собственный контейнер между собственным js и ресурсами удаленного сервера А. Можно использовать. asp, php, java, .net и т. д. В качестве примера можно привести динамический веб-язык asp (получить список друзей пользователя на веб-сайте Redekuai и вернуть данные в формате xml)
<%
p = " http://redekuai.com/api/user_friends_xml/funy "
Response.BinaryWrite ZQcnGet(p)
Ответ.Flush
Функция ZQcnGet(url)
Установить Получение = CreateObject("Microsoft.XMLHTTP")
С поиском
.Откройте «Получить», URL, False, «», «»
.Отправлять
ZQcnGet = .ResponseBody
Конец с
Установить получение = Ничего
Конечная функция
%>
Сохраните этот код как proxy.asp, а затем поместите его в IIS. На данный момент вы можете найти машину для написания js и использовать ajax для запроса proxy.asp. В конечном итоге это эквивалентно реализации доступа к домену ajax. .
Пример кода PHP проще
echo file_get_contents(" http://redekuai.com/api/user_friends_xml/funy "");
?>
Примечание. Версия PHP должна быть >= 4.3.0.
Вот пример кода для версии asp.net (C#):
using System.Net;
использование System.IO;
использование System.Text;
общедоступные части ajaxpages класса: System.Web.UI.Page
{
protected void Page_Load (отправитель объекта, EventArgs e)
{
WebRequest wr = WebRequest.Create(" http://redekuai.com/api/user_friends_xml/funy ");
WebResponse wres = wr.GetResponse ();
Кодировка resEncoding = System.Text.Encoding.GetEncoding("utf-8");
StreamReader sr = новый StreamReader(wres.GetResponseStream(), resEncoding);
строка html = sr.ReadToEnd();
Ответ.Запись(html);
ср.Закрыть();
wres.Закрыть();
}
}
Соответственно proxy.asp proxy.php proxy.aspx
Так в чем же практическое значение хорошей работы в качестве прокси и обеспечения доступа домена js к удаленным ресурсам веб-сайта на вашем собственном компьютере (а не на веб-сервере)?
Знаете, нынешние интернет-технологии вступили в эпоху абсолютного коллажа. В Соединенных Штатах более 2000 компаний полагаются на приложение Facebook, чтобы выжить. Правда ли, что такая иностранная производственная цепочка не может быть развита в Китае? Вы должны знать, что через 5 лет Интернет также станет инфраструктурой Китая. Уже существуют относительно хорошие сайты web2.0, которые открывают API (снова стреляют, быстро становятся горячими) или готовятся к их открытию.