Вы можете использовать новые ключевые слова Javascript async
и await
Сначала сделайте getSomeData
асинхронным, что также требует от него возврата обещания:
private async getSomeData(): Promise<DataObjectArray[]> {
return this.myService.something().map((response: Response) => {
return response.children;
});
}
, затем ожидайте функция в compileData
:
let someData = await this.getSomeData();
Однако это означает, что compileData
, поскольку он возвращает результат, должен быть также асинхронным. Это означает, что вам нужно добавить ключевое слово async
и изменить тип на Promise<DifferentDataArray[]>
.
В случае, если вас не волнует ваш результат, вы можете вызвать асинхронную функцию без ожидания, поэтому вам также не нужно ждать результата, и он обрабатывается в фоновом режиме. Если вы полагаетесь на результат, вы должны его дождаться. В этом случае другие части вашего приложения могут продолжаться! В любом случае, если вы разрабатываете асинхронное приложение, вы должны подумать о том, что произойдет, когда все равно.
Ваша полная функция compileData:
public async compileData(): Promise<DifferentDataArray[]> {
// get some stuff from a config, then make service call
let someData = await this.getSomeData();
/* If I have a promise returned, someData errors saying not an array type */
for (let oneData of someData){
/* loop through config data + service data making a return object array */
}
return this.dataCollection;
}
public compileData(): DifferentDataArray[] {
// get some stuff from a config, then make service call
let someData = this.getSomeData();
/* If I have a promise returned, someData errors saying not an array type */
for (let oneData of someData){
/* loop through config data + service data making a return object array */
}
return this.dataCollection;
}
Или Существуют и другие способы оценки кода
. Вы не можете отфильтровать вызовы к eval ()
на уровне синтаксического анализа, потому что JavaScript - это полный по Тьюрингу язык, на котором можно запутывать вызовы. например. увидеть обходной путь Свинто. Вы можете скрыть window.eval
, переписав его нулевым значением, но на самом деле есть другие способы оценки кода, в том числе (чуть выше моей головы):
или вызвать массовую панику в javascript?
Хорошо, createElement ('iframe'). Src = 'http: //evil.iframeexploitz.ru/aff=2345' - это одна из худших атак, которые вы можете ожидать ... но на самом деле, когда скрипт имеет контроль, он может делать все, что может пользователь на вашем сайте. Это может заставить их написать «я» мама большой старый педофил! тысячу раз на ваших форумах, а затем удалите свой аккаунт. Например.
Должен ли я прибегнуть к требованию автора предоставить интерфейс веб-службы?
Да или:
, примером последнего, который может вас заинтересовать, является Google Caja . Я не совсем уверен, что доверю этому; это тяжелая работа, и у них наверняка были некоторые дыры в безопасности, но это лучшее из того, что есть, если вы действительно должны использовать этот подход.
Должен ли я прибегнуть к требованию автора предоставить интерфейс веб-службы?
Да или:
, примером последнего, который может вас заинтересовать, является Google Caja . Я не совсем уверен, что доверю этому; это тяжелая работа, и у них наверняка были некоторые дыры в безопасности, но это лучшее из того, что есть, если вы действительно должны использовать этот подход.
Должен ли я прибегнуть к требованию автора предоставить интерфейс веб-службы?
Да или:
, примером последнего, который может вас заинтересовать, является Google Caja . Я не совсем уверен, что доверю этому; это тяжелая работа, и у них наверняка были некоторые дыры в безопасности, но это лучшее из того, что есть, если вы действительно должны использовать этот подход.
, пример примера Последний, который может вас заинтересовать - это Google Caja . Я не совсем уверен, что доверю этому; это тяжелая работа, и у них наверняка были некоторые дыры в безопасности, но это лучшее из того, что есть, если вы действительно должны использовать этот подход.
, пример примера Последний, который может вас заинтересовать - это Google Caja . Я не совсем уверен, что доверю этому; это тяжелая работа, и у них наверняка были некоторые дыры в безопасности, но это лучшее из того, что есть, если вы действительно должны использовать этот подход.
На самом деле нет никакого способа, которым разрешение произвольного выполнения Javascript может быть безопасным. На самом деле, любая фильтрация, которую вы предоставляете для предотвращения злонамеренного кода, будет лишать законного кода доступ к аналогичным функциям или данным. Я не думаю, что то, что вы хотите сделать, выполнимо таким образом.
Нет, вы практически не можете запретить предоставленному пользователем коду Javascript запускать все, что ему захочется - даже запретив eval ()
не может помешать ему запускать произвольные программы (это может быть сам интерпретатор Javascript, в этом случае он просто реализует функцию eval ()
и многие другие способы - например, он может Добавьте HTML с некоторыми обработчиками событий в строковой форме, затем выполните их, он может document.write ()
новый сценарий и т. д.).
Если вашему сайту не нужен этот пользовательский JS для запуска на компьютерах других пользователей я просто поставил бы большое жирное предупреждение, добавил бы некоторый человеческий контроль (который мог бы пометить мошеннический код как таковой), возможно, некоторое антивирусное программное обеспечение на сервере (не знаю об этом много).
Фильтрация eval, вероятно, не работает. Я полагаю, что вы можете взломать его так: window ['ev' + 'al'] ('alert ("hello world");');
. Конечно, вы можете заменить функцию eval ...