google app script] Как создать код без взлома, используя адреса электронной таблицы - PullRequest
0 голосов
/ 25 января 2020

Я создаю и продаю электронные таблицы, используя скрипт приложения Google.

Каждая проданная мной программа делает ее работоспособной только по этому адресу.

  var sheetvalue = "1K113gwapnZwvLwe9Ad9d8Uk68wNVxLWlboku4BzljS5k";
  var actualSheetName  = SpreadsheetApp.getActiveSpreadsheet().getId();
  if(actualSheetName!=sheetvalue){
    return;
  }

И я пытаюсь сделать ее доступной только для определенный промежуток времени.

  var yyyy= 2111;
  var mm = 10;
  var dd = 21;
  var now = new Date()
  var end = new Date(yyyy , mm-1 , dd+1 )
  if(end.getTime() - now.getTime() < 0){
    return;
  }

Они оба работают хорошо.

Вы должны знать, что я запутываю код при его распространении.

Трудно изменить обфусцированные коды при продлении периода, используемого позже, используют.

Так что я просто хочу исключить код, который проверяет период.

(Это тоже запутывает.)

function check_date(){
var yyyy= 2111;
var mm = 10;
var dd = 21;
var now = new Date()
var end = new Date(yyyy , mm-1 , dd+1 )
if(end.getTime() - now.getTime() < 0){
return "NO";
}
}
function body(){
var check =check_date();
if(check =="NO"){
return;
}
//...do programm stuff

}

Но когда пользователь отлаживал скрипт. Пользователь может видеть, что значение YES, NO является значением ключа.

Затем пользователь может удалить код check_date () и воссоздать его.

Так что я собираюсь поставить секрет код

function password(){
var password = "20220105/K113gwapnZwvLwe9Ad"//yyyy mm dd
return password;
} // It doesn't obfuscate.

function body(){

var getpassword_and_date =  password();
var rawdata = getpassword_and_date.split("/");
var getdate = rawdata[0];
var getpassword = rawdata[1];


var id = SpreadsheetApp.getActiveSpreadsheet().getId(); 
//like a3igia9we0fjawiegdkf
// do Decryption
.
var makepassword = id+getdate+"secret-key";
makepassword= makepassword.md5();
//it not real code but do like this

if(makepassword!=getpassword){
return;
}

var now = new Date()
var end = new Date(yyyy , mm , dd )
if(end.getTime() - now.getTime() < 0){
return;
}// and date check not real do parse in get date

Это хорошо.

Поскольку его можно использовать только путем смены пароля.

Но у меня есть вопрос.

Может ли пользователь знать секретный ключ под кодом, скрытым приложением Google отладка сценария?

var makepassword = id+getdate+"secret-key";

Если пользователь может это выяснить, есть ли способ сделать это невозможным?

1 Ответ

1 голос
/ 27 января 2020

Как сказал @tehhowch в комментариях, вы не можете запутать код и ожидать, что он будет проверен пользователем.

Что вы можете сделать, это опубликовать sh ваш код как library , чтобы пользователь не смог увидеть детали реализации. Также взгляните на частные функции .

Также посмотрите на этот вопрос стека Apps Script Private functions .

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