Vraag beveiling

  • Hallo,


    ik ben nu al een tijd bezig met men crime maar hoe kan ik die het best beveiling ik gebruik al een paar dingen


    Zoals:
    - URL controle op: Server, Mysql, }, {, ;, ...
    - GET['id] controle doormiddel van

    PHP
    if(!nummer_controle($_GET['id'])) {


    - POST controle:

    PHP
    $bericht_post	= addslashes(htmlspecialchars(mysql_real_escape_string($_POST['bericht'])));


    Hoop dat je verder allemaal goed is Misschien tips zijn ook altijd welkom


    Mvg

  • Guest, wil je besparen op je domeinnamen? (ad)
  • Dit is hoe ik beveilig:


    Een getal controleren:

    PHP
    if(!ctype_digit($getal))
          {
               echo'Geen getal!';
          }
        
          else
          {
               echo'Wel een getal!';
          }


    Beveiliging voordat je iets in een database zet, bijvoorbeeld een naam:

    PHP
    $naam = mysql_real_escape_string($_POST['naam']);


    Controle voor als je iets uit de database haal, bijvoorbeeld een tekst:

    PHP
    $tekst = htmlspecialchars($object->tekst);


    Verder kijk ik of de pagina's die aangevraagd worden in men toegestane array staat, zoals dit:


    Dit is hoe ik mijn site beveilig, wat jij nu doe als je een POST controleer is onnodig, je hoeft maar 1 ding te gebruiken. Plus als je POST controleer hoeft het niet door hmtlspecialchars, dat is alleen als je iets uit de database haalt en wilt laten zien zoals profiel informatie.


    Ik hoop dat ik hier mee geholpen heb!


    Als mensen oneens zijn over mijn manier van beveiligen, zeg het dan en beargumenteer. Daar leer ik en veel andere mensen weer van!


    Groetjes

  • MrMees
    Jou manier gebruik ik ook al tijden, nooit problemen ondervonden op die manier.
    Veel zeggen dat [func]ctype_digit[/func] ook een slechte functie is, krijg alleen nooit een reply terug waarom het slecht is ^o).


    Zou Mrmees zijn manier aanleren, op die manier ben je redelijk goed beveiligt.


    Toevoeging over [func]htmlspecialchars[/func]:


    Zoals Mrmees al aangeeft is [func]htmlspecialchars[/func] alleen nodig wanneer je een tekst eruit haalt.


    Alles wat je erin stopt, [func]addslashes[/func] of [func]mysql_real_escape_string[/func]



    Mooi uitgelegd Mrmees :cheer:

  • Hoor niet heel vaak dat [func]ctype_digit[/func] een slechte functie is. Eigenlijk zijn er ook weinig slechte functies in de PHP core, ze doen tenslotte wat ze moeten doen.


    Echter, [func]ctype_digit[/func] gaat na of een string die je meegeeft enkel bestaat uit cijfers. Het controleert dus niet (direct) of er een geldig getal wordt opgegeven. En wanneer je niet te streng wilt zijn in de invoer, maar soepeler, prefereer ik het volgende:


    PHP
    <?php
    
    
    if(is_numeric($invoer) {
      $invoer = round($invoer); //We willen tenslotte alleen werken met hele getallen.
      $invoer = abs($invoer); //Negatieve waardes omzetten naar positieve waarden (de vraag is of je dat zo wilt).
    }
    
    
    ?>


    Daarnaast is [func]ctype_digit[/func] ook echt enkel goed als je gehele, positieve getallen wilt. Wanneer je dat niet wilt moet je er toch weer omheen.


    Misschien een leuke uitdaging:

    PHP
    function realNumber($number, $digits = 0, $negative = false, $tolerance = 2) {}


    Over het voorbeeld wat TS geeft in zijn beginpost.


    PHP
    $bericht_post    = addslashes(htmlspecialchars(mysql_real_escape_string($_POST['bericht'])));


    Dit is natuurlijk meer overkill dan beveiling. Daarnaast moet je ook nog eens zien al die slashes weer weg te filteren. En onthoud regel 1:


    "Data in de database moet zo min mogelijk zijn bewerkt."


    Tenslotte wil je niet altijd je data als HTML weergeven, maar soms ook aanpassen, naar PDF schrijven, enz.


    En mag ik mijzelf dan nog één keer quoten?(a)


    "Beveiliging is geen kwestie van de goede functies, het is een kwestie van logisch nadenken en alert zijn."

  • +1 Killingdevil
    Ben al aardig tijdje bezig met een zelf geschreven spel.


    Dingen waar ik op let is:


    - CSRF
    - Bruteforce
    - XSS
    - SQL Injections
    - Session hijacking


    Meer veiligheids fouten ken ik wel, weet alleen nog niet helemaal hoe ik ze ga beveiligen ;)

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!