Как я устанавливаю cookie от внешних доменов внутри iframes в Safari?

Используйте этот класс для шифрования. Это работает.

public class ObjectCrypter {


public static byte[] encrypt(byte[] ivBytes, byte[] keyBytes, byte[] mes) 
        throws NoSuchAlgorithmException,
        NoSuchPaddingException,
        InvalidKeyException,
        InvalidAlgorithmParameterException,
        IllegalBlockSizeException,
        BadPaddingException, IOException {

    AlgorithmParameterSpec ivSpec = new IvParameterSpec(ivBytes);
    SecretKeySpec newKey = new SecretKeySpec(keyBytes, "AES");
    Cipher cipher = null;
    cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
    cipher.init(Cipher.ENCRYPT_MODE, newKey, ivSpec);
    return  cipher.doFinal(mes);

}

public static byte[] decrypt(byte[] ivBytes, byte[] keyBytes, byte[] bytes) 
        throws NoSuchAlgorithmException,
        NoSuchPaddingException,
        InvalidKeyException,
        InvalidAlgorithmParameterException,
        IllegalBlockSizeException,
        BadPaddingException, IOException, ClassNotFoundException {

    AlgorithmParameterSpec ivSpec = new IvParameterSpec(ivBytes);
    SecretKeySpec newKey = new SecretKeySpec(keyBytes, "AES");
    Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
    cipher.init(Cipher.DECRYPT_MODE, newKey, ivSpec);
    return  cipher.doFinal(bytes);

}

}

И это ivBytes и случайный ключ;

String key = "e8ffc7e56311679f12b6fc91aa77a5eb";

byte[] ivBytes = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
keyBytes = key.getBytes("UTF-8");
21
задан GDmac 26 May 2011 в 20:00
поделиться

3 ответа

Это проблема, известная как политика одного происхождения. По сути, это мера безопасности от создания лазеек в системе безопасности.

Если у вас есть iframe, который указывает на страницу в вашем собственном домене, JavaScript может получить доступ как к странице, на которой вы находитесь, так и к странице внутри Iframe. Это приемлемые отношения между родительским элементом и дочерним элементом с родительским.

 (parent doc)        (iframe doc)
    HTML --> IFRAME <-- HTML 
      ^--------|---------^

Однако, как только у вас есть файл, указывающий на внешнюю страницу, SOP вступает в игру и использует любую информацию, передаваемую между родительской страницей и страницей iframe.

 (parent doc)        (iframe doc)
    HTML --> IFRAME <-- HTML 
               X

Прочтите этот пост о взаимодействии с iframe, это имеет смысл! Stackoverflow post

Эти ссылки тоже действительно помогают!

1) Безопасная междоменная связь в браузере
2) wiki SOP или Same Origin Policy

Удачи!

8
ответ дан 29 November 2019 в 21:41
поделиться

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

По-видимому, POST-запроса достаточно, чтобы удовлетворить тест Safari «перешел ли я к этому домену», поэтому с этого момента он принимает файлы cookie из этого домена.

Конечно, это не самый лучший код, но он вполне может решить вашу проблему. проблема.

3
ответ дан 29 November 2019 в 21:41
поделиться

Одно из решений (немного запутанное) может заключаться в том, чтобы родительская страница проверяла наличие файла cookie и, если файл cookie отсутствует, запускать AJAX-вызов скрипта в домене страницы iframe. который устанавливает cookie.

2
ответ дан 29 November 2019 в 21:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: