Ajax с beforeSend, но учетные данные скрыты - PullRequest
1 голос
/ 11 марта 2019

У меня есть этот вызов ajax:

$(document).ready(function() {
    $.ajax({
        type: 'GET',
        beforeSend: beforeSend,
        url: someUrl

Для beforeSend Я получил:

const beforeSend = function ( xhr ) { xhr.setRequestHeader( 'Authorization', 'Basic ' + Base64.encode( UserPass ) );};

С:

const Base64 = {_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(e){var t="";var n,r,i,s,o,u,a;var f=0;e=Base64._utf8_encode(e);while(f<e.length){n=e.charCodeAt(f++);r=e.charCodeAt(f++);i=e.charCodeAt(f++);s=n>>2;o=(n&3)<<4|r>>4;u=(r&15)<<2|i>>6;a=i&63;if(isNaN(r)){u=a=64}else if(isNaN(i)){a=64}t=t+this._keyStr.charAt(s)+this._keyStr.charAt(o)+this._keyStr.charAt(u)+this._keyStr.charAt(a)}return t},decode:function(e){var t="";var n,r,i;var s,o,u,a;var f=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(f<e.length){s=this._keyStr.indexOf(e.charAt(f++));o=this._keyStr.indexOf(e.charAt(f++));u=this._keyStr.indexOf(e.charAt(f++));a=this._keyStr.indexOf(e.charAt(f++));n=s<<2|o>>4;r=(o&15)<<4|u>>2;i=(u&3)<<6|a;t=t+String.fromCharCode(n);if(u!=64){t=t+String.fromCharCode(r)}if(a!=64){t=t+String.fromCharCode(i)}}t=Base64._utf8_decode(t);return t},_utf8_encode:function(e){e=e.replace(/\r\n/g,"\n");var t="";for(var n=0;n<e.length;n++){var r=e.charCodeAt(n);if(r<128){t+=String.fromCharCode(r)}else if(r>127&&r<2048){t+=String.fromCharCode(r>>6|192);t+=String.fromCharCode(r&63|128)}else{t+=String.fromCharCode(r>>12|224);t+=String.fromCharCode(r>>6&63|128);t+=String.fromCharCode(r&63|128)}}return t},_utf8_decode:function(e){var t="";var n=0;var r=c1=c2=0;while(n<e.length){r=e.charCodeAt(n);if(r<128){t+=String.fromCharCode(r);n++}else if(r>191&&r<224){c2=e.charCodeAt(n+1);t+=String.fromCharCode((r&31)<<6|c2&63);n+=2}else{c2=e.charCodeAt(n+1);c3=e.charCodeAt(n+2);t+=String.fromCharCode((r&15)<<12|(c2&63)<<6|c3&63);n+=3}}return t}};

const UserPass = 'SomeLogin:SomePass'

Но это не нормальноЯ не могу иметь учетные данные SomeLogin: SomePass в моем JavaScript.Как я могу скрыть их или использовать их из PHP или что-то?Я называю этот AJAX прямо со страницы HTML, я использую Symfony.Какой-то парень сказал мне: «Читай это из печенья», но я не понял, как, какое печенье.

Ответы [ 2 ]

1 голос
/ 13 марта 2019

Файлы cookie - это файлы, которые хранятся в конце клиента (в данном случае они хранятся в браузере) и содержат важную информацию для пользователя о веб-сайте.Надеюсь, идентификатор сессии находится внутри cookie.Идентификатор сеанса - это значение, которое идентифицирует сеанс.Сеанс - это концепция, которая обозначает использование службы (в данном случае веб-сайт) через канал (в данном случае браузер).

Вы можете получить cookie-файл страницы через document.cookie (javascriptкод).Запустите

console.log(document.cookie);

, и вы увидите значение вашего куки для данного сайта в консоли браузера.Файл cookie может содержать несколько значений, поэтому существует несколько библиотек, которые стремятся упростить ваше взаимодействие с файлами cookie.

РЕДАКТИРОВАТЬ:

Идея состоит в том, чтобы использовать идентификатор сеанса, поскольку в этом случае, даже еслиВаш идентификатор сеанса украден, ваше имя пользователя и пароль останутся только в вашем распоряжении.

0 голосов
/ 11 марта 2019

Если вам действительно нужно хранить учетные данные в тайне, а не в браузере, вы не должны хранить их в браузере. Вы можете использовать свой сервер в качестве прокси. Сделайте ajax-вызов на ваш сервер и сделайте так, чтобы сервер выполнял аутентификацию, вызываемую для службы.

С другой стороны, если учетные данные специфичны для каждого пользователя, вы можете использовать их как таковые, просто убедитесь, что вы делаете вызовы HTTPS, чтобы никто не мог видеть тело запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...