Qualsiasi problema noto con ColdFusion 9 è un controllo numerico?

2

Probabilmente sto solo paranoicamente di nuovo sulla sicurezza. L'ultima cosa che mi tiene sveglio la notte sono i controlli che uno dei nostri siti usa. Esegue ColdFusion 9 in ambiente Windows e controlliamo un input da parte di isNumeric per verificare che una stringa o input sia effettivamente un numero. Se non è un'esecuzione di stop numerico e mostra un messaggio all'utente, altrimenti fare ciò che deve essere fatto normalmente. La mia domanda è, c'è un modo per rompere questo assegno? Fondamentalmente un qualche tipo di formato che è numerico riporterà come un numero ma in realtà può includere qualcosa di brutto?

<cfparam name="userInput" default="0">
<cfif isNumeric(userInput)>
    // Should be a number id 500
    // Use value to do SQL stuff because should be number
    // I know, not the best practice. Plan to fix all of these but the 
    // amount of code is staggering to fix all of these. Figured 
    // start with one thing then move on
    <cfquery>
       SELECT * FROM db WHERE serial = #userInput#
    </cfquery>
<cfelse>
    // Not a number ie '500sws'
</cfif>

C'è qualcosa che può essere passato in userInput che può ingannarlo per segnalare true ma in realtà non lo è?

Il motivo per cui ti sto chiedendo è che questo sito è vecchio. Le cose sono antiquate. Sono in procinto di lavorare su una grande quantità di codice e ci sono punti di vulnerabilità che correggerò mentre vado, ma se isNumeric può essere ingannato, allora ho più lavoro da fare.

Non sono sicuro che lo stia spiegando nel modo giusto. Fammi sapere se c'è bisogno di chiarimenti.

Se questo deve essere spostato altrove, fammi sapere. La mia ultima domanda di sicurezza che ho posto è finita qui, quindi ho deciso di provare prima qui. Grazie a tutti.

    
posta jkw4703 07.03.2017 - 20:52
fonte

1 risposta

1

Non riesco a testarlo per CF9, perché questa versione è troppo vecchia e non è più facilmente disponibile. Per essere sicuro al 100% è necessario forzare la conversione a un numero prima di utilizzarlo. Ad esempio (non testato).

<cfquery>
   SELECT * FROM db WHERE serial = #Val(userInput)#
</cfquery>
    
risposta data 10.03.2017 - 10:35
fonte

Leggi altre domande sui tag