Как использовать функцию strpos для фильтрации JS-кода?

Как улучшить функцию, которая проверяет наличие в строке подстрок, представляющих собой JavaScript-код? Какие другие ключевые слова JavaScript следует добавить к списку для проверки?
  • 30 июля 2024 г. 17:03
Ответы на вопрос 3
Для использования функции `strpos` для фильтрации JS-кода, можно применить следующий подход:

1. Создать список ключевых слов JavaScript, которые необходимо проверить в строке.
2. Использовать функцию `strpos` для поиска каждого ключевого слова в строке.
3. Если хотя бы одно из ключевых слов найдено, считать строку содержащей JS-код.

Пример улучшенной функции для проверки наличия JS-кода в строке:

```php
function containsJSCode($string) {
    $jsKeywords = array("function", "var", "let", "const", "if", "else", "for", "while", "switch", "case");
    
    foreach ($jsKeywords as $keyword) {
        if (strpos($string, $keyword) !== false) {
            return true;
        }
    }

    return false;
}

// Пример использования
$string = "function helloWorld() { console.log('Hello, World!'); }";
if (containsJSCode($string)) {
    echo "Строка содержит JS-код.";
} else {
    echo "Строка не содержит JS-код.";
}
```

Для улучшения функции можно также добавить другие ключевые слова JavaScript, такие как `return`, `break`, `continue`, `try`, `catch`, `throw`, `typeof`, `instanceof`, `Promise`, `async`, `await` и другие, в зависимости от вашего контекста.

Помним, что этот метод фильтрации JS-кода не является абсолютно надежным, так как код может быть написан в различных форматах и стилях, и функция `strpos` не учитывает все возможные варианты. Для более сложной фильтрации JS-кода лучше использовать библиотеку или регулярные выражения.
Тебе уже отвечали, не нужно изобретать свой велосипед. нужно подключить санитайзер. <a href="https://qna.habr.com/q/1363130" rel="nofollow">Как на сервере проверить строку на отсутствие в ней js-кода?</a>
variable <blockquote>думаю поочереди проверять есть ли такие подстроки:</blockquote> <br/> <br/> ну да... <br/> <br/> "create a main variable" - содержит подстроку var (но не является кодом) <br/> "let's do it" = содержит подстроку let (но не является кодом) <br/> <br/> Подсказка: нужно сначала определить задачу - с какой целью вы хотите найти js код, а уже потом искать решения.
Похожие вопросы