Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 8 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.09.08
Prihlásený: 14.11.17
Príspevky: 225
Témy: 74
Bydlisko: Michalovce
Príspevok NapísalOffline : 28.09.2008 14:34

Nazdarek. Chcel by som vas poprosit, ci by sa mi niekto nemohol pozriet na tento kod..Spravil som si formular na registraciu a chcel by som vediet ci je to spravne a ak nie tak v com mam chyby. Kod mi funguje, ale chcem hlavne vediet, ci tam mam dobru(dostatocnu) ochranu a ci je ten kod spravne napisany.. Aby som zbytocne nerobil dalsie casti stranky s tymi istymi chybami. Tento subor je includovany...

Kód:
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" >
<meta http-equiv="content-language" content="sk" >

  <link rel="stylesheet" type="text/css" href="menu.css">
</head>
<BODY text="black" bgColor="white" bottomMargin="0" bgcolor="#163689" leftMargin="0" topMargin="30" marginheight="0"
marginwidth="0" align="center">

<?

function ochreg ($input, $is_sql = false)
{
$input = htmlentities($input, ENT_QUOTES);

if(get_magic_quotes_gpc ())
{
$input = stripslashes ($input);
}

if ($is_sql)
{
$input = mysql_real_escape_string ($input);
}

$input = strip_tags($input);
$input = str_replace("
", "\n", $input);

return $input;


   $meno1= ochreg($_POST["meno"]);
   $heslo1= ochreg($_POST["heslo"]);
   $heslo2= ochreg($_POST["heslo2"]);
   $email1= ochreg($_POST["email"]);
   $sex1= ochreg($_POST["sex"]);
   $country1= ochreg($_POST["country"]);


  function JeEmail ($cislo)
  {
    return ereg("^.+@.+\..+$",$cislo);
  }

  function emailvdb ($email1, $link)
  {
    $vysledek=mysql_query("select * from xxxxx where email='$email1'", $link);
    return (boolean) mysql_num_rows($vysledek);
  } 

  function menovdb ($meno1, $link)
  {
    $vysledek=mysql_query("select * from xxxxx where meno='$meno1'", $link);
    return (boolean) mysql_num_rows($vysledek);
  } 

   function heslovdb ($heslo1, $link)
  {
    $vysledek=mysql_query("select * from xxxxx where heslo='$heslo1'", $link);
    return (boolean) mysql_num_rows($vysledek);
  }

 
$link=mysql_connect("xxxxx", "xxxxx", "xxxxx");
    mysql_select_db("xxxxx");
 
  $register=true;
  if (!empty($_POST))
  {
 
 
    if (strlen($meno1)>15 | strlen($meno1)<5)echo "Meno musí mať minimálne 5 znakov!";
    elseif (strlen($heslo1)>15 | strlen($heslo1)<5) echo "Heslo musí mať minimálne 5 znakov!";
    elseif (strlen($heslo1) != strlen($heslo2)) echo "Hesla sa nezhodujú!";
    elseif (!JeEmail($email1)) echo "Nie je zadaný platný e-mail!";
    elseif (menovdb($meno1, $link)) echo "Uvedený nick je už registrovaný!";
    elseif (heslovdb($heslo1, $link)) echo "Uvedené heslo je už registrované!";
    elseif (emailvdb($email1, $link)) echo "Uvedený e-mail je už registrovaný!";
    else
    {
 
      $register=false;
   
      echo "Ďakujeme za registráciu. Na vašu adresu <b>$email1</b> boli zaslané informácie pre jej dokončenie.";
     
      mysql_query ("insert into xxxxx (id, meno, heslo, email, sex, country) values ('', '$meno1', '$heslo1', '$email1', '$sex1', '$country1')", $link);
         
     
       $a = $country1;
       $unique = $meno1;
       mail($email1, "Registracia na tvojejstranke.sk", "Pre aktiváciu účtu kliknite na následujuci príklad: http://www.nieco.sk/registraciadokoncena.php?kluc=$unique", "From: email@azet.sk");

    }
  }

?>



<div style="FONT-WEIGHT: bold; FONT-SIZE: 22px; COLOR: #7c0000; FONT-FAMILY: Arial, Trebuchet, Verdana; text-align: center">Registrácia</div>

<table width="500" cellpadding="0" cellspacing="0" bgcolor="white" border="0" align="center">
<tr><td height="40">
<tr><td class="register_l">
<b>Podmienky registrácie:</b></br>
- registrácia na stránke je bezplatná</br>
- ... dalšie podmienky..
</td></tr></table>

<?
if ($register):?>
  <form method="post" action="index.php?site=registracia">
<table width="500" cellpadding="0" cellspacing="0" bgcolor="white" border="0" align="center">

<tr><td width="250" height="35">
  <span class="register_m">Meno:</span></br>
  <span class="register_p">( Slúži pri prihlasovaní. Meno musí mať min. 5 znakov. )</span>
</td><td>
  <input name="meno" type="text" size="25" maxlength="15" value="<?echo $_POST["meno"]?>"></br>
</td></tr>

<tr><td width="250" height="35">
  <span class="register_m">Heslo:</span></br>
  <span class="register_p">( Heslo musí mať min. 5 znakov.)</span>
</td><td>
  <input name="heslo" type="text" size="25" maxlength="15" value="<?echo $_POST["heslo"]?>">
</td></tr>

<tr><td width="250" height="35">
  <span class="register_m">Heslo pre kontrolu:</span></br>
</td><td>
  <input name="heslo2" type="text" size="25" maxlength="15" value="<?echo $_POST["heslo2"]?>">
</td></tr>

<tr><td width="250" height="35">
  <span class="register_m">E-mail:</span></br>
  <span class="register_p">( Váš email nebude nikde zverejnený.)</span>
</td><td>
  <input name="email" type="text" size="25" maxlength="25" value="<?echo $_POST["email"]?>">
</td></tr>

<tr><td width="250" height="35">
  <span class="register_m">Pohlavie:</span></br>
</td><td>
  <select name="sex"  size="1" value="<?echo $_POST["sex"]?>" >
      <option value="muz">Muž
      <option value="zena">Žena
      <option value="par">Pár
      </select>
</td></tr>

<tr><td width="250" height="30px">
  <span class="register_m">Krajina:</span></br>
</td><td>
  <select name="country" size="1" value="<?echo $_POST["country"]?>" >
<OPTION value=United States selected>United States
<OPTION value=United Kingdom>....
<OPTION value=Zimbabwe>Zimbabwe
</OPTION>
</SELECT>
    </td></tr>
     <tr>
      <td colspan="2" height="45" align="center"><input type="Submit" name="odesli" class="register" value="Zaregistrovať"></td>
    </tr>
                             
</table>

  </form>
<?endif;?>
</body>


Dakujem za kazdu radu a pomoc...


Offline

Skúsený užívateľ
Skúsený užívateľ
Pomoc, kontrola

Registrovaný: 09.07.08
Prihlásený: 17.01.15
Príspevky: 1585
Témy: 96
Príspevok NapísalOffline : 28.09.2008 16:11

wtf, function heslovdb? To odtial určite vyhoď! Takto by mohol užívateľ oskenovať nejaký zoznam slov a v prípade úspechu by to mohol zneužiť. Okrem toho máš heslá v databáze ako plaintext, to je hovadina na n-tú.Určite ich nejakým spôsobom aspoň zahashuj.
Aktivácia účtu, kde pošleš iba meno dohromady nič nerieši. Okrem toho, môže ti to rozkopať url. Použi tam nejakú zvlášť tabulku, kde budeš mať vygenerované náhodné kľúče ku každej registrácii. Prípadne tiež použi hash (/salted hash)
$link=mysql_connect("xxxxx", "xxxxx", "xxxxx");
mysql_select_db("xxxxx"); - to by si mohol dať do configu, nedávaj sem údaje na pripojenie do databázy.
Do sql query sa ti dostávajú údaje bez mysql_real_escape_string. Táto funkcia nerieši všetko, ale pomôže. Máš síce prepínač, ktorým zabezpečíš, aby sa tá funkcia vykonala, ale všade máš false, ani raz true.
Vyjadroval som sa iba k bezpečnosti, lebo na tú si sa pýtal, ale taká hovadinka, chýbajú ti úvodzovky v <OPTION>
Celkové hodnotenie: na registráciu v gmaili by som to nepoužil, ale na začiatočníka dobré (ak je tvoja prezývka ešte aktuálna).
Mohol by si tam zahrnúť ešte aj také nejaké hovadinky, že kontrola mena, či neobsahuje nezmyselné znaky a pod.

Tominator: nie je umenie čítať pekný kód :) Videl som omnoho horšie kódy a aj som s horšími pracoval.







_________________
neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.09.08
Prihlásený: 14.11.17
Príspevky: 225
Témy: 74
Bydlisko: Michalovce
Príspevok Napísal autor témyOffline : 28.09.2008 17:36

rooobertek..dik za odpovede.. to function heslovdb vyhodim..mas recht..ma to logiku a v podstate je jedno ak uzivatelia maju rovnake heslo..hash na heslo urcite pouzijem, len momentalne pre lepsiu (jednoduchsiu) prehladnost pri tvorbe stranky a prace s db som to zatial vynechal.. To pripojenie na db cez config tiez poriesim.. zaujimaju ma vsak 2 veci..
1.
Citácia:
Do sql query sa ti dostávajú údaje bez mysql_real_escape_string. Táto funkcia nerieši všetko, ale pomôže. Máš síce prepínač, ktorým zabezpečíš, aby sa tá funkcia vykonala, ale všade máš false, ani raz true.

Celkom tomu nerozumiem.. mohol by si mi to troska konkretnejsie vysvetlit.. ? Aky je rozdiel najme toho false a true..
2. salted hash ..no skusal som nieco najst na googli, ale nenatrafil som na nic, co by bolo teda aspon pre mna dostatocne zrozumitelne vysvetlene.. :?
Nemohol by si mi hodit nejaky link, kde by som sa k tomu docital cosi viac??

Tomi, ako by mal ten kod vyzerat aby bol prehladnejsi???

Ten nick stale plati.. ;)


Offline

Skúsený užívateľ
Skúsený užívateľ
Pomoc, kontrola

Registrovaný: 09.07.08
Prihlásený: 17.01.15
Príspevky: 1585
Témy: 96
Príspevok NapísalOffline : 28.09.2008 18:54

no vo funkcii ochreg máš premennú $sql, ktorú máš defaultne "false". Ani v jednom prípade si nenastavil na true, čiže
Kód:
 if ($is_sql)
{
$input = mysql_real_escape_string ($input);
}
ti nikdy nič nespraví, pretože to je vždy false. Boolean dúfam vieš, čo je

Salted hash - Keď máš obyčajný hash, najčastejšie md5, vznikne ti síce spätne nerozlúštiteľný string, ale sú databázy, kam hodíš ten hash a vypluje ti pôvodný výraz. Sú aj brute-force spôsoby na zistenie pôvodného hesla. Pridaním nejakého saltu môžeš rozlúštenie sťažiť.
Príklad:
Kód:
$obycajny_hash = md5($_POST['heslo']);
$salted_hash = md5($_POST['heslo'].'nejaký strašne dlhý text, ktorým to celé skomplikujem, najlepšie aj s nejakými neobvyklými bajtmi a znakmi a nikde ho nezverejním');
$iny_salted_hash = md5($_POST['heslo'].$_POST['meno'])
$dalsi_sposob_ako_to_skomplikovat = md5(sha1($_POST['heslo']).nejaka_dalsia_hashovacia_funkcia($_POST['heslo']).crc32($_POST['heslo']))







_________________
neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.09.08
Prihlásený: 14.11.17
Príspevky: 225
Témy: 74
Bydlisko: Michalovce
Príspevok Napísal autor témyOffline : 01.10.2008 12:54

Trocha som googlil a hladal nieco k php injection. Chcem sa opytat este na jednu vec. Ak uz mam spravenu funkciu na ochranu

Kód:
function ochreg ($input, $is_sql = false)
{
$input = htmlentities($input, ENT_QUOTES);

if(get_magic_quotes_gpc ())
{
$input = stripslashes ($input);
}

if ($is_sql)
{
$input = mysql_real_escape_string ($input);
}

$input = strip_tags($input);
$input = str_replace("
", "\n", $input);

return $input;
}


je potrebne potom este davat/riesit ochranu cez htmlspecialchars/addslashes ?

Napr.
Kód:
$meno= ochreg(htmlspecialchars(addslashes($_POST["meno"])));


Alebo je to totalna hlupost??

Fakt som v tomto smere uplny laik, tak privitam kazde normalne vysvetlenie.. :roll:


Offline

Skúsený užívateľ
Skúsený užívateľ
Pomoc, kontrola

Registrovaný: 09.07.08
Prihlásený: 17.01.15
Príspevky: 1585
Témy: 96
Príspevok NapísalOffline : 01.10.2008 13:05

podla toho, na aké účely. Že proti čomu to chceš použiť.
Ochrany nikdy nie je dosť.
Musím ťa upozorniť na buffer overflow v htmlspecialchars a htmlentities.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.09.08
Prihlásený: 14.11.17
Príspevky: 225
Témy: 74
Bydlisko: Michalovce
Príspevok Napísal autor témyOffline : 01.10.2008 13:17

Ja viem ze ochrany nikdy nie je dost.. A tiez viem, ze na 100% sa mi nepodari nikdy zabezpecit web.. Ale ak by som taketo nieco pouzil v registracnom /prihlasovacom formulari a pod...ci by to postacovalo, alebo by to chcelo este nieco lepsie..
Jednoducho potrebujem nieco, co by maximalne eliminovalo nejake php injection a pod. na mojej stranke..
Som pozeral rôzne ochrany na nete a mam pocit, ze cim viac som toho pozrel, tym som zufalejsi. Totiz, vzdy ked som nasiel nejaku ochranu,tak o chvilu som narazil na clanok, kde bolo ako tu ochranu obist alebo jej nevyhody.
Fakt uz neviem co pouzit. :cry:


Offline

Skúsený užívateľ
Skúsený užívateľ
Pomoc, kontrola

Registrovaný: 09.07.08
Prihlásený: 17.01.15
Príspevky: 1585
Témy: 96
Príspevok NapísalOffline : 01.10.2008 13:34

Nj, to je schizofrénia jak hovado robiť bezpečnosť. Musíš si spraviť tézu a rovno aj antitézu (neviem, čo znamenajú tie slová, len sa mi páčia :) )
Nie je univerzálna funkcia, ktorou zabezpečíš všetko. Sú rôzne typy bezpečnostných dier. Na každú musíš použiť niečo iné. Na SQL injection nemôžeš použiť to isté, čo na XSS a pod.
Najľahšie sa dá asi predísť PHP injection. Keď máš nejaké súbory pre každého užívateľa iný, pristupovať k nim budeš iba na základe id-čka súboru, id-čka užívateľa alebo tak nejak.
Pomôcť ti dosť môžu regular expressions (funkcie preg_*, ereg_*). Napríklad to môžeš použiť pri tej registrácii tak, že zakážeš všetky znaky okrem písmen a zadáš maximálnu dĺžku. A tým máš vybavené XSS, sql aj php injection, buffer overflow... všetko. Podobne by si mohol narábať s heslami. Vždy pracuj iba s hashmi a máš po probléme s sql injection, pretože string obsahujúci iba čísla a písmena A-F nemôže nijako ublížiť.
Na bezpečnosť sa skús pozerať skôr komplexnejšie, nie hľadať univerzálnu funkciu, ktorá vyrieši všetky nočné mory. Bude trvať, kým sa to všetko naučíš. Aj tak to nikdy nebude všetko, pretože chyby sa hľadajú stále nové a nové.







_________________
neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to!
Odpovedať na tému [ Príspevkov: 8 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. !!!POMOC - KONTROLA ZOSTAVY 550€ !!!

v PC zostavy

3

374

17.12.2013 13:12

jumich Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Pomoc / kontrola PC zostavy

v PC zostavy

14

481

04.01.2015 18:05

Lessik Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Pomoc...Cyklicka redundantna kontrola

v Ostatné programy

14

1599

24.09.2009 23:31

shiro Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Kontrola zostavy 1500 € plus pomoc s chladením

v PC zostavy

2

396

06.01.2020 20:26

Flores79 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Kontrola/Pomoc s výberom pred kúpou notebooku do 800€

v Notebooky a netbooky

1

320

23.08.2020 22:24

pepkopav Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Prosím o pomoc pri odvírení - kontrola Hijack a wmav

v Bezpečnosť a firewally

18

1587

26.06.2008 7:37

pistabaci Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Kontrola

v PC zostavy

12

767

04.09.2011 14:53

bindo000 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. kontrola

v Antivíry a antispywary

0

643

13.02.2010 16:15

stancoj Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Kontrola

v PC zostavy

11

586

12.11.2012 11:42

RicK^ Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Kontrola

v PC zostavy

12

871

08.01.2009 22:37

Jaro Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Kontrola Logu

v Antivíry a antispywary

0

542

10.03.2008 4:33

PE1987 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. kontrola fomruláru

v JavaScript, VBScript, Ajax

7

969

14.11.2017 18:19

void Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. rodičovská kontrola

v Operačné systémy Microsoft

2

548

01.02.2011 15:53

makonm Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Kontrola zostavy

v PC zostavy

12

727

26.04.2017 8:05

cinematik Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Kontrola logu

v Antivíry a antispywary

11

1022

25.08.2007 20:26

Rbot Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. kontrola hijack

v Antivíry a antispywary

1

452

13.11.2007 15:22

Rbot Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra