login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Beveiligingsvraag

Offline qubus - 23/09/2010 21:57
Avatar van qubusLid Hallo,

Ik heb in de loop van de tijd diverse beveiligingen aangebracht op mijn website. Het is een site die werkt met index.php?pagina=......
Om te ondervangen als men de URL wijzigt, gebruik ik:
  1. // Veiligheids check
  2. $paginatest = "(http:|ftp:|shttp: |https: |www.|.php|.cgi|.asp)";
  3. if(eregi($paginatest, $pagina)) { $pagina = "main"; }
  4.  
  5. // Veiligheidscheck 2
  6. $pagina_inc = $pagina . ".php";
  7. if (!file_exists($pagina_inc)) { $pagina = "main"; }


Om Mysql injection te voorkomen, haal ik alles wat de DB ingaat door de volgende filter:
  1. function filter($text){
  2.  
  3. //transformeert eerst de "goede" tags naar hun bb versie, zodat ze door het strip_tags filter niet aangetast worden.
  4. $text = preg_replace("(<img src=\"(.+?)\" border=\"0\">)", "\[img\]$1\[/img\]", $text);
  5. $text = preg_replace("(<b>(.+?)</b>)", "\[b\]$1\[/b\]", $text);
  6. $text = preg_replace("(<u>(.+?)</u>)", "\[u\]$1\[/u\]", $text);
  7. $text = preg_replace("(<i>(.+?)</i>)", "\[i\]$1\[/i\]", $text);
  8. $text = preg_replace("(<strike>(.+?)</strike>)", "\[s\]$1\[/s\]", $text);
  9. $text = preg_replace("(<div align=\"left\">(.+?)</div>)", "\[left\]$1\[/left\]", $text);
  10. $text = preg_replace("(<div align=\"right\">(.+?)</div>)", "\[right\]$1\[/right\]", $text);
  11. $text = preg_replace("(<center>(.+?)</center>)", "\[center\]$1\[/center\]", $text);
  12. $text = eregi_replace("<font color=\"([^\\[]*)\">([^\\[]*)</font>","\\[color=\\1\\]\\2\\[/color\\]",$text);
  13. $text = eregi_replace("<font size=\"([^\\[]*)\">([^\\[]*)</font>","\\[size=\\1\\]\\2\\[/size\\]",$text);
  14. $text = eregi_replace("<a href=\"mailto:([^\\[]*)\">([^\\[]*)</a>","\\[email=\\1\\]\\2\\[/email\\]",$text);
  15. $text = eregi_replace("<a href=\"([^\\[]*)\" target=\"_blank\">([^\\[]*)</a>","\\[url=\\1\\]\\2\\[/url\\]",$text);
  16. $text = preg_replace("(<marquee>(.+?)</marquee>)","\[move\]$1\[/move\]", $text);
  17.  
  18. $text = strip_tags($text);
  19. $text = htmlentities($text, ENT_QUOTES);
  20.  
  21. $text = addslashes($text);
  22. return $text;
  23. }


En ergens heb ik ooit iets opgepikt dat zou moeten helpen tegen cross site scripting:
  1. // Metatags van $_POST en $_GET filteren i.v.m. cross site scripting
  2. if(sizeof($_GET) > 1) {
  3. foreach($_GET as $post => $waarde) {
  4. $_GET[$post] = trim(strip_tags($waarde));
  5. }
  6. }
  7. if(sizeof($_POST) > 1) {
  8. foreach($_POST as $post => $waarde) {
  9. $_POST[$post] = trim(strip_tags($waarde));
  10. }
  11. }
  12. if(sizeof($_SESSION) > 1) {
  13. foreach($_SESSION as $post => $waarde) {
  14. $_SESSION[$post] = trim(strip_tags($waarde));
  15. }
  16. }


Graag zou ik eens de mening van jullie als experts hebben of ik hiermee mijn site veilig heb.
Tips wat beter kan welkom.

Alvast bedankt

3 antwoorden

Gesponsorde links
Offline vinTage - 23/09/2010 22:02
Avatar van vinTage Nieuw lid Ik ben van mening dat je alles in je database zo puur mogelijk moet opslaan (wel veilig, dus door PHP.net: mysql_real_escape_string bv)
En met het uitlezen van je database gooi je het zaakje over PHP.net: htmlentities
Offline DenMette - 24/09/2010 09:10
Avatar van DenMette PHP gevorderde Laat mij 1 ding duidelijk zijn, als ze erin willen dan doen ze dat gewoon, maar mits een paar dingen mooi op te lossen houd je de belangrijkste kwalen wel buiten.

Jou code ziet er vrij goed uit, vinTage heeft wel gelijk in verband met opslagen van gegevens in de database.
Offline icemar - 24/09/2010 10:32
Avatar van icemar Lid Je gebruikt 2 standaard php functies die niet veilig zijn en zijn in php 5.3 ook niet meer beschikbaar.
Namelijk eregi en eregi_replace je kan hier voor beter preg_match en preg_replace.
Suc6 er mee.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.211s