У меня есть этот код:
printf '%s' 'Enter deployment request ID: '
read request_id
[[ $request_id ]] || { printf '%s' 'Request ID is required' >&2; exit 2; }
...
mysql -h "$db_host" -u app_user --database dep_db -p -sNE "
update dep_requests set
state='FAILED', end_time=sysdate(), message='Cancelled manually'
where id='$request_id' limit 1;
"
Поскольку request_id
, который является строкой, принимается как пользовательский ввод, это может привести к внедрению SQL.Каков наилучший способ сделать этот код свободным от этой уязвимости?
Возможно, я могу подтвердить ввод с помощью регулярного выражения.Есть ли лучшие способы?