Ничто внутри одинарных кавычек не будет расширено на bash, включая любые двойные кавычки и имена переменных. Хорошей новостью является то, что вы можете завершить раздел с одинарными кавычками и сразу же начать раздел с двойными кавычками, чтобы ввести переменную, и все это будет объединено в один аргумент для приложения (curl). Попробуйте:
/usr/bin/curl -s -vvvv http://hmvddrsvr:8044/query/service -u iamusr:pssd -d 'statement=DELETE FROM `test_bucket` WHERE type = "Metadata" AND market = "ES" AND status = "active" AND meta(test_bucket).id=\"'"$idp_sub"'\" ' -o /opt/SP/jboss/home/mayur/es_delete_response.txt
Вы можете сделать свой код полностью защищенным от инъекций, отклонив любую строку, содержащую двойные кавычки, но вы можете отклонить некоторые строки, которые законно экранированы.
Если вы можно использовать синтаксис q для цитирования строки, вы можете сделать ее более защищенной от инъекций, но я полагаю, что злоумышленнику просто нужно ввести ]"
:
/usr/bin/curl -s -vvvv http://hmvddrsvr:8044/query/service -u iamusr:pssd -d 'statement=DELETE FROM `test_bucket` WHERE type = "Metadata" AND market = "ES" AND status = "active" AND meta(test_bucket).id=q\"['"$idp_sub"]'\" ' -o /opt/SP/jboss/home/mayur/es_delete_response.txt
Затем вы можете найти и отклонить шаблон string ]"
как ваш антиинъекционный код, который позволит использовать более широкий класс допустимых строк. Вы должны будете сказать пользователям, что вы применили к их вводу кавычки q [], чтобы им не пришлось это делать.