Модуль KRL, который настроен с ключом API - PullRequest
2 голосов
/ 28 мая 2011

Я пишу модуль KRL для API. API требует ключ доступа, который должен быть предоставлен набором правил, который вызывает мой модуль. Мой модуль содержит мой ключ доступа, который используется в правилах тестирования в модуле.

Набор правил, который использует мой модуль, предоставляет ключ доступа следующим образом:

use module a421x99 alias SuperModule with access_key = "01234567";

1 - Как мне написать свой модуль, чтобы ключ доступа не попадал в сгенерированный Javascript?

2 - Предположим, что вызывающий набор правил не предоставляет ключ доступа. Как защитить свой собственный ключ доступа, который я вставил в модуль для тестирования?

1 Ответ

2 голосов
/ 28 мая 2011

Прежде всего , вы должны включить ключи API, используя блок key в meta, например:

key s3 {
  "access_key" : "--access_key--"
}

Это лучше, чем хранить или передавать ключи в простых строках.

Второй , вашему модулю нужна строка configure using в meta (я полагаю, у вас уже есть такая строка). Передача пустого хеша в качестве значения по умолчанию предотвратит использование жестко закодированного ключа в модуле набором правил, вызывающим модуль.

configure using s3keys = {}

Наконец , в глобальном блоке сделайте что-то вроде этого:

usekeys = s3keys || keys:s3();

Это говорит KRL использовать либо s3keys, который был передан вызывающим набором правил, либо клавишу s3 из собственного блока meta модуля, если ваш модуль используется сам по себе. Даже если кто-то использует ваш модуль, он никогда не получит ваш keys:s3() из-за значения по умолчанию, которое вы установили в строке configure using.

Получив usekeys, вы можете pick() собрать нужные вам куски:

access_key = usekeys.pick("access_key");

Модуль Sam's Twilio - отличное место для примеров.

...