Примеры параметризированных запросов [закрываются]

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

Однако аппаратные меры защиты могут работать хорошо. Пример путем, это может работать хорошо, является этим: Найдите (довольно) простой, но необходимый компонент своего программного обеспечения и реализуйте его в Verilog/VHDL. Генерируйте общедоступно-частную пару ключей и сделайте веб-сервис, который берет строку проблемы и шифрует ее с закрытым ключом. Тогда сделайте аппаратный ключ USB, который содержит Ваш открытый ключ и генерирует случайные строки проблемы. Ваше программное обеспечение должно попросить, чтобы аппаратный ключ USB проблему представил в виде строки и отправил его до сервера для шифрования. Программное обеспечение тогда отправляет его в аппаратный ключ. Аппаратный ключ проверяет зашифрованную строку проблемы с открытым ключом и входит во 'включенный' режим. Ваше программное обеспечение тогда называет в аппаратный ключ любое время, это должно сделать операцию, которую Вы записали в HDL. Таким образом, любой желающий пирату, Ваше программное обеспечение должно выяснить то, что операция - и повторно реализует его - намного тяжелее, чем просто нанесение поражения чистой защите программного обеспечения.

Редактирование: Просто реализованный часть материала проверки назад от того, каково это должно быть, но я вполне уверен, идея сталкивается.

5
задан shin 13 December 2009 в 08:48
поделиться

2 ответа

Параметризованный запрос - это, по сути, запрос, который абстрагирует все входные данные. Это имеет несколько хороших побочных эффектов, таких как обезвреживание всех вводимых данных (т. Е. Недопустимость вредоносных инъекций) и ускорение их многократного использования, поскольку они предварительно анализируются и компилируются, поэтому движок знает, как применять данный ввод. Пример в чистом mysql:

PREPARE qry FROM "INSERT INTO tbl VALUES (?)";

Теперь оператор скомпилирован и кэширован, и его можно выполнять многократно без необходимости перекомпилировать и интерпретировать его:

SET @var = "some input";
EXECUTE qry USING @var;
SET @var = "some other input";
EXECUTE qry USING @var;

При использовании в PHP он обычно выглядит следующим образом (сокращенно):

$stmt = prepare('INSERT INTO tbl VALUES(?)');
execute($stmt, array("some input"));
execute($stmt, array("some other input"));
execute($stmt, array("some more input"));
8
ответ дан 13 December 2019 в 05:36
поделиться
PREPARE stmt_name FROM "SELECT name FROM Country WHERE code = ?";

SET @test_parm = "FIN";

EXECUTE stmt_name USING @test_parm;

Источник: MySQL Dev: подготовленные операторы

4
ответ дан 13 December 2019 в 05:36
поделиться
Другие вопросы по тегам:

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