bash expansão aritmética parece estar propensa a ataques de injeção

2

Suponha que você queira que seu script tome variáveis do ambiente:

#!/usr/bin/env bash
set -eu

if (( ${A-} )); then
    echo true
else
    echo false
fi

A expansão aritmética parece ser mais razoável aqui para lidar com (empty) , 0 , 1 casos ou então:

if [ "${A-}" ] && [ "${A-}" != 0 ]; then

Mas então,

$ A='1 - 1' ./1.sh
false

Então, agora você pode basicamente alterar variáveis, o que geralmente não é permitido. O que você sugeriria? Como processar sinalizadores booleanos tirados de variáveis de ambiente?

    
por x-yuri 18.11.2018 / 19:08

0 respostas