На моем сайте разрешены только несколько параметров запроса, но некоторые сканеры или хакеры, пытающиеся получить доступ к URL с уникальными параметрами, которые не поддерживает мое php-приложение, я могу заблокировать их на уровне php-приложения, проверив $_GET
параметров, но мой сервер загружается, поэтому я хочу показать 403, если параметры недействительны
Параметры запроса могут быть в любом порядке
Пока что я пыталсявыглядит следующим образом
# IF there is query string
RewriteCond %{QUERY_STRING} ^.+$
# Then parameters can be only query|debug|lang
# block any extra parameter
RewriteCond %{QUERY_STRING} !(^|$)(query|debug|lang)=[^&]+(&|$) [NC]
RewriteRule ^(.*)$ - [F,L]
Но проблема здесь заключается в том, что
http://example.com/search?query=test&debug=on&lang=en&foo=bar
его передача, даже если хакер передает foo=bar
, я хочу показать 404, строгая проверка параметров до достижения приложения php.
Вот: Переписать тестер
Не отображается 404
Пример действительного URL с параметром запроса
http://example.com/search?query=test&debug=on&lang=en
Пример недействительного URL с параметром запроса
(Проверьте, есть ли какой-либо параметр запроса, кроме разрешенного ???)
http://example.com/search?query=test&debug=on&lang=en&foo=bar
http://example.com/search?a=1
http://example.com/search?a=2
http://example.com/search?query=test&a=1
То же самое я могу сделать в php, но яхочу заблокировать запрос, прежде чем достигнуть моего телПриложение p.
$allowed = array('query', 'lang', 'debug');
foreach($_GET as $key => $value)
{
if(!in_array($key, $allowed))
{
http_response_code(403)
die('Forbidden');
}
}
Также на моем веб-сайте допустимые символы запроса uri: [A-Za-z0-9_-]
Как я могу заблокировать, если запрос uri содержит что-то лишнее
Также хотитезнаете,
- можно ли при перезаписи также проверять переменные POST?
- Я вижу много подозрительных строк агентов, как их заблокировать
- Также я вижу в рефералехакеры, пытающиеся внедрить строки xss и sqlinjection, как их заблокировать.