На моем сайте разрешены только несколько параметров запроса. Некоторые параметры таковы, что их длина должна составлять всего 1 символ, то есть AZ или az или 1-0, но некоторые сканеры или хакеры, пытающиеся получить доступ к URL с длинными параметрами, которые не поддерживаются моим приложением php, могут заблокировать их в php прикладного уровня, проверяя параметры $ _GET, но мой сервер загружается, поэтому я хочу показать 403/404, если параметры недействительны
пример правильного UR ::
http://example.com/books/index.php?cat=A
но Получение
http://example.com/books/index.php?cat=response.write(9687913*9040912 http://example.com/books/index.php?cat=/.././.././.././.././.././.././.././../etc/./passwd%2500 http://example.com/books/index.php?cat=%22%2bconvert(int%2cCHAR(52)%2bCHAR(67)%2bCHAR(117)%2bCHAR(84)%2bCHAR(117)%2bCHAR(79)%2bCHAR(115)%2bCHAR(84)%2bCHAR(107)%2bCHAR(68)%2bCHAR(76))%2b%22 http://example.com/books/index.php?cat=)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) http://example.com/books/index.php?cat=CWS%07%0e000x%9c%3d%8d1N%c3%40%10E%df%ae%8d%bdI%08)%d3%40%1d%a0%a2%05%09%11%89HiP%22%05D%8bF%8e%0bG%26%1b%d9%8e%117%a0%a2%dc%82%8a%1br%04X;%21S%8c%fe%cc%9b%f9%ff%aa%cb7Jq%af%7f%ed%f2.%f8%01>%9e%18p%c9c%9al%8b%aczG%f2%dc%beM%ec%abdkj%1
Можно ли в .htaccess ограничить некоторые параметры, чтобы принимать только 1 символ, в противном случае для пользователей отображается 404
Допустим, вы хотите ограничить параметр cat только одной буквой, а затем использовать это правило, чтобы возвращать ошибку 403 для всех остальных случаев значения cat:
cat
403
RewriteCond %{QUERY_STRING} !(?:^|&)cat=[a-z](?:&|$) [NC] RewriteRule ^ - [F]