[an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]
 
[an error occurred while processing this directive] [an error occurred while processing this directive]
Skåne Sjælland Linux User Group - http://www.sslug.dk Home   Subscribe   Mail Archive   Forum   Calendar   Search
MhonArc Date: [Date Prev] [Date Index] [Date Next]   Thread: [Date Prev] [Thread Index] [Date Next]   MhonArc
 

Re: [PROGRAMMERING] Sikkerhedsvurdering af et shell-CGI-script



In <sslug@sslug> Peter Eriksen <sslug@sslug> writes:

[sikkerhed i CGI-script skrevet i shell]

>#! /bin/sh
>VALG=${QUERY_STRING//&/ }
>VALG=${VALG//valgt=/ }
>for I in $VALG; do
>    case $I in
>        Computerworld) skriv_liste computerworld.sh;;
>        Glek) skriv_liste glek.sh;;
>        *) echo "<p> Ugyldigt modul, $I, forsøgt </p>" ;;
>    esac
>done

>Mit spørgsmål er så, om denne tabelopslagskonstruktion har nogen
>svagheder; er $VALG og $QUERY_STRING harmløse uanset, hvad de
>indeholder?

Grunden til at man generelt fraråder at skrive shell CGI-script,
er at der er så utrolig mange måder hvor man kan forvanske input
og ende med at få shell'en til at fortolke dele af QUERY_STRING
som en kommando.

Det er ikke umuligt at skrive sikre shell-script, men bare meget
svært. Jeg kunne ikke lige på 5 minutter finde en måde at få
udført en kommando med dit script - det tætteste jeg kunne komme
var at få sat variablen I til en kommando med bacticks omkring -
men jeg vil tro at det kan lade sig gøre hvis man bruger lidt mere
tid på det.

Hvis man absolut vil skrive et shell-script til at håndtere CGI,
så vil jeg foreslå at man starter med at køre QUERY_STRING variablen
igennem et lille C-program, som fjerner "farlige" tegn.

F.eks. noget i stil med http://www.sslug.dk/~storner/safequery.c

Så starter man sit script med

  #!/bin/sh

  # Hent en renset udgave af QUERY_STRING, og slet 
  # den straks efter så vi ikke kommer til at bruge den
  # ved et uheld.
  QUERY="`safequery`"
  QUERY_STRING=""
  export $QUERY $QUERY_STRING

  if [ "$QUERY" = "" ]
  then
     echo "Jeg vil ikke snydes"
     exit 1
  fi

og bruger herefter $QUERY til at arbejde videre på.


Henrik
-- 
Henrik Storner


 
Home   Subscribe   Mail Archive   Index   Calendar   Search

 
 
Questions about the web-pages to <www_admin>. Last modified 2005-08-10, 22:44 CEST [an error occurred while processing this directive]
This page is maintained by [an error occurred while processing this directive]MHonArc [an error occurred while processing this directive] # [an error occurred while processing this directive] *