Автоматические обновления - что такое 'соответствующая' безопасность?

Я не совсем уверен, что вы можете этого достичь. Я уверен, что есть гораздо более простые способы решить вашу проблему.

Возможно, вы не удаляете из своего основного массива $myArray в этой строке: unset($v[$elementKey]);

$myArray = array(
    0 => array(
        'ulStatic' => array(
            0 => array(
                'day' => '2019-03-30 18:30:00',
                'id' => '7',
                'origin' => 'intentions',
            ),
        ),
        'ulDynamic' => array(
            0 => array(
                'day' => '2019-03-30 18:30:00',
                'id' => '5',
                'origin' => 'intentions',
            ),
        ),
        'ulCreatedDynamic' => array(
        ),
    ),
    1 => array(
        'ulStatic' => array(
            0 => array(
                'day' => '2019-03-31 09:30:00',
                'id' => '8',
                'origin' => 'intentions',
            ),
        ),
        'ulDynamic' => array(
        ),
        'ulCreatedDynamic' => array(
        ),
    ),
    2 => array(
        'ulStatic' => array(
        ),
        'ulDynamic' => array(
        ),
        'ulCreatedDynamic' => array(
            0 => array(
                'day' => '2019-04-02 11:15:00',
                'id' => '275',
                'origin' => 'obseques',
            ),
            1 => array(
                'day' => '2019-04-02 11:15:00',
                'id' => '277',
                'origin' => 'obseques',
            ),
        ),
    ),
);

$id = 275;
$day = "2019-04-02 11:15:00";

foreach ($myArray as $k => $array):
    foreach ($array as $ul => $v):
        if ($ul == "ulCreatedDynamic"):
            foreach ($v as $elementKey => $element):
                if ($element['day'] == $day && $element['id'] == $id):
                    // unset($v[$elementKey]);
                    unset($myArray[$k][$ul][$elementKey]);
                endif;
            endforeach;
        endif;
    endforeach;
endforeach;
var_dump($myArray);

$ myArray:

array(3) {
  [0]=>
  array(3) {
    ["ulStatic"]=>
    array(1) {
      [0]=>
      array(3) {
        ["day"]=>
        string(19) "2019-03-30 18:30:00"
        ["id"]=>
        string(1) "7"
        ["origin"]=>
        string(10) "intentions"
      }
    }
    ["ulDynamic"]=>
    array(1) {
      [0]=>
      array(3) {
        ["day"]=>
        string(19) "2019-03-30 18:30:00"
        ["id"]=>
        string(1) "5"
        ["origin"]=>
        string(10) "intentions"
      }
    }
    ["ulCreatedDynamic"]=>
    array(0) {
    }
  }
  [1]=>
  array(3) {
    ["ulStatic"]=>
    array(1) {
      [0]=>
      array(3) {
        ["day"]=>
        string(19) "2019-03-31 09:30:00"
        ["id"]=>
        string(1) "8"
        ["origin"]=>
        string(10) "intentions"
      }
    }
    ["ulDynamic"]=>
    array(0) {
    }
    ["ulCreatedDynamic"]=>
    array(0) {
    }
  }
  [2]=>
  array(3) {
    ["ulStatic"]=>
    array(0) {
    }
    ["ulDynamic"]=>
    array(0) {
    }
    ["ulCreatedDynamic"]=>
    array(1) {
      [1]=>
      array(3) {
        ["day"]=>
        string(19) "2019-04-02 11:15:00"
        ["id"]=>
        string(3) "277"
        ["origin"]=>
        string(8) "obseques"
      }
    }
  }
}
5
задан Community 23 May 2017 в 11:48
поделиться

4 ответа

С надлежащим использованием криптографии Ваши обновления могут быть очень безопасными. Защитите сайт, от которого Вы распределяете свои обновления с SSL. Подпишите все свои обновления с GPG/PGP или чем-то еще, заставьте свои клиенты проверить подпись прежде, чем применить обновление. Предпринимает шаги для проверки сервер и ключи сохранены чрезвычайно безопасными.

Соответствующий, очень субъективно. Что достаточно для интернет-игры, возможно, абсолютно несоответствующей для системы безопасности для наших ядерных ракет. Необходимо решить, сколько потенциального ущерба могло произойти, если бы кому-то удалось повредить безопасность.

6
ответ дан 13 December 2019 в 22:17
поделиться

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

Для обеспечения безопасности очевидно, необходимо постараться не распределять ключ для подписи. Поэтому Вы могли реализовать некоторое изменение подписания сообщения RSA

2
ответ дан 13 December 2019 в 22:17
поделиться

нет по-видимому никаких серьезных оснований не обеспечить автоматические обновления для большей части программного обеспечения.

Существуют серьезные основания не вызвать обновление.

  1. исправления ошибок могут взломать код
  2. пользователи не могут хотеть рисковать повреждать производственные системы, которые полагаются на более старые функции
1
ответ дан 13 December 2019 в 22:17
поделиться

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

Однако реалистично почти что-либо, что Вы делаете, будет, по крайней мере, столь же безопасным как маршрут, через который Ваши пользователи получают первую установку Вашего программного обеспечения во всяком случае. Если Ваши пользователи первоначально загружают Ваш установщик через плоскость http, слишком поздно, чтобы начать защищать вещи на обновлениях.

Это также верно в некоторой степени, даже если они получают Ваше первоначальное программное обеспечение через https или снабженный цифровой подписью - поскольку большинство пользователей может легко быть убеждено нажать "OK" почти на любом предупреждении системы безопасности, они видят на этом.

1
ответ дан 13 December 2019 в 22:17
поделиться
Другие вопросы по тегам:

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