PHP check in form

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jurrien P

Jurrien P

01/01/2012 20:15:57
Quote Anchor link
Hoi,

Op dit moment kunnen mensen PHP dingen invoeren die schadelijk zijn. Ik wil dit graag oplossen door een check te maken, dus als er PHP tags worden ingevoerd returnt het een error. Iemand een oplossing? Heb geprobeerd te zoeken, maar vond niet echt iets, ook zijn er nog meer dingen die ik moet blokkeren?
Gewijzigd op 01/01/2012 20:19:20 door Jurrien P
 
PHP hulp

PHP hulp

21/12/2024 16:10:37
 
Wouter J

Wouter J

01/01/2012 20:19:17
Quote Anchor link
Als een gebruiker je script kan aanpassen is er iets goed mis. Weet je zeker dat het goed is wat je nu hebt?

En hoe kan een gebruiker PHP dingen uitvoeren? En waarom kan een gebruiker dit doen?

En mocht je het zelf uit willen zoeken, gebruik preg_match en leer dan wel even Regexen.
 
Jacco Brandt

Jacco Brandt

01/01/2012 20:19:23
Quote Anchor link
Misschien iets qua code en uitleg waar het ingodsnaam over gaat?
 
Noppes Homeland

Noppes Homeland

01/01/2012 20:24:49
Quote Anchor link
@Jacco Brandt
Even tussen de regels doorlezen

Er wordt bedoeld:
- er mogen geen php scripts / code gepost worden
- er mag geen hmtl gepost worden
- er mag geen js code gepost worden
- er mag geen sql injectie gedaan worden
enz..
 
Jurrien P

Jurrien P

01/01/2012 20:40:23
Quote Anchor link
Ik heb gewoon simpele velden gemaakt die naar de database gaan. Maar ik wil niet hebben dat er PHP, HTML, JS in mijn velden kunnen. Dat moet toch gewoon kunnen met een simpele if statement?
 
Noppes Homeland

Noppes Homeland

01/01/2012 20:45:58
 
- Ariën  -
Beheerder

- Ariën -

01/01/2012 21:06:03
Quote Anchor link
Als ik zo hoor heb je al voldoende aan htmlspecialchars()
 
Noppes Homeland

Noppes Homeland

01/01/2012 21:49:05
Quote Anchor link
htmlspecialchars, dat houdt het niet tegen, dat zet alleen wat om
 
- Ariën  -
Beheerder

- Ariën -

01/01/2012 22:03:18
Quote Anchor link
Noppes Homeland op 01/01/2012 21:49:05:
htmlspecialchars, dat houdt het niet tegen, dat zet alleen wat om

Maar het houdt de uitvoer wel tegen, doordat de tekens om worden gezet naar entities.
 
Noppes Homeland

Noppes Homeland

01/01/2012 22:06:35
Quote Anchor link
Ja, maar daar gaat dit topic niet om. Het gaat om de detectie van, als dat in een $_POST/$_GET voorkomt, dat er een "blokkade" optreed.
 
Herman van Ree

Herman van Ree

02/01/2012 12:21:49
Quote Anchor link
Wat zijn php-tags?
 
- Ariën  -
Beheerder

- Ariën -

02/01/2012 12:33:08
Quote Anchor link
<?php en ?>
 
Wouter J

Wouter J

02/01/2012 12:33:59
Quote Anchor link
@Herman, dat kunnen 2 dingen zijn:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
echo 'Hello World';
?>


<!-- Of -->

<script language="php">
echo 'Hello World';
</script>
 
Jacco Brandt

Jacco Brandt

02/01/2012 12:45:33
Quote Anchor link
- Aar - op 02/01/2012 12:33:08:
<?php en ?>


of <? en ?> óf <% en %>

Kun je dit niet gebruiken?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
function validInput($input)
{


    if (strip_tags($input) != str_replace("\0", '', $input))// strip_tags haalt ook 0-bytes weg.
        return false;

    return true;

}
 
Kris Peeters

Kris Peeters

02/01/2012 13:06:40
Quote Anchor link
Wat je vraagt, lijkt me niet echt wenselijk.

Wat jij moet doen, is goed beseffen welk wapen je gebruikt tegen welke vijand.

Om te beginnen: escapen moet je sowieso doen.
escapen beschermt je tegen SQL injection, maar zorgt er bv. ook voor dat het woord foto's (het gaat om de ' ) goed wordt behandeld.

Iemand die het woord foto's post, heeft geen kwade bedoelingen, maar toch moet je je er tegen beschermen.

Wat je eventueel wel kan doen, is controleren op de aanwezigheid van HTML tags, en daar op blokkeren.
Zoiets:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
  // ...
  // controleren op html tags (en dus ook javascript, want die moeten tussen <script></script> staan om actief te zijn)

  if($_POST['my_text'] != strip_tags($_POST['my_text'])) {
    $error = 'Je mag geen html tags posten';
    echo $error;
  }

  else {
    // geen html tags gevonden.  Deze tekst mag je in je db steken
    $my_text = mysql_escape_string($_POST['my_text']);  // zie ook mysql_real_escape_string()
    $sql = "INSERT INTO mijn_tabel (mijn_tekst, ...) VALUES ('" . $my_text . "', ...)";
    // ...
    echo $my_text;
  }

  // ...
?>


Wat de php tags bevat: eventueel filter je die ook weg; hoewel ... je moet al serieus slecht bezig zijn als php code wordt uitgevoerd omwille van de content van een post.
 
Jacco Brandt

Jacco Brandt

02/01/2012 13:33:21
Quote Anchor link
strip_tags verwijderd ook PHP-tags
 
Kris Peeters

Kris Peeters

02/01/2012 13:53:37
Quote Anchor link
Twee vliegen in één klap :)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.