Nefunkcny kod na vkladanie dat do databazy

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

fili
Level 1.5
Level 1.5
Příspěvky: 102
Registrován: prosinec 11
Pohlaví: Muž
Stav:
Offline

Re: Nefunkcny kod na vkladanie dat do databazy

Příspěvekod fili » 16 úno 2012 22:02

Vdaka. Takze som to mal cele zle. :-( Teraz je to fajn, uz mi to nepriratava ID aj ked dam 2x to iste meno.
Este by to chcelo, upozornenie pre uzivatela, ak nevyplnil niektore pole formulara.
Uvazujem ako to este zabezpecit a co tak 2x zadat heslo, captcha alebo ako by som este mohol?
A rovnake zabezpecenie by som mohol pouzit aj pre prihlasenie, ze?

Reklama
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Nefunkcny kod na vkladanie dat do databazy

Příspěvekod CZechBoY » 16 úno 2012 22:05

XSS, CSRF, SQL injection o tom si přečti a pak zkus zabezpečit tvůj web :)

prázdný políčka by bylo dobrý ověřit, koukal jsem že to tam chybí no :)
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

fili
Level 1.5
Level 1.5
Příspěvky: 102
Registrován: prosinec 11
Pohlaví: Muž
Stav:
Offline

Re: Nefunkcny kod na vkladanie dat do databazy

Příspěvekod fili » 16 úno 2012 23:15

Lahko povedat, tazsie urobit, taketo veci som zatial este nevidel - overovanie prazdnych poli form.
Prave som docital http://hornad.fei.tuke.sk/predmety/dbs/dbs-cv/php_odporucania.pdf
skryl som si prihlasovacie udaje do DB. Mzno by bol dobry Whitelist, ale musim zistit ako sa take nieco
robi. Uz si to niekedy robil?

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Nefunkcny kod na vkladanie dat do databazy

Příspěvekod CZechBoY » 17 úno 2012 09:52

letmo jsem to proletěl a je tam všecko co jsem zmiňoval (CSRF, XSS, SQL inj., PHP inj. tam myslim nebyla, session hijack) :)

která díra ti dělá problém?

XSS: vypisovat data nějakou funkcí - třeba htmlentities
CSRF: používat token, který se uloží do session a při odeslání formu se zkontroluje
SQL inj: escapovat všechny řetězcové hodnoty, převést na čísla všechny číslicové hodnoty
PHP inj: kontrolovat jaký soubor includuji
session: minimálně měnit všude session id pomocí session_regenerate_id() případně kontrolovat HTTP hlavičky (IP, prohlížeč)
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

fili
Level 1.5
Level 1.5
Příspěvky: 102
Registrován: prosinec 11
Pohlaví: Muž
Stav:
Offline

Re: Nefunkcny kod na vkladanie dat do databazy

Příspěvekod fili » 19 úno 2012 21:00

Tak toto mi nie je celkom jasne
"PHP inj: kontrolovat jaký soubor includuji
session: minimálně měnit všude session id pomocí session_regenerate_id() případně kontrolovat HTTP hlavičky (IP, prohlížeč)"
Ale myslim, ze to asi budem potrebovat. No zrejme si budem musiet este nieco o tom precitat. Zatial som pri kontrole
prazdnych poli form.

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Nefunkcny kod na vkladanie dat do databazy

Příspěvekod CZechBoY » 19 úno 2012 21:43

nevim co nechápeš, ale radši napiš čemu nerozumíš..
na netu je všechno, jinak bych o tom nevěděl ;)

prázdný políčka musíš kontrolovat všude, jinak jsou ty formuláře jaksi k ničemu ;)

můžeš použít nějakou knihovnu na zjednodušení práce.. třeba Forms z Nette frameworku
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

fili
Level 1.5
Level 1.5
Příspěvky: 102
Registrován: prosinec 11
Pohlaví: Muž
Stav:
Offline

Re: Nefunkcny kod na vkladanie dat do databazy

Příspěvekod fili » 20 úno 2012 19:56

No stale riesim tu kontrolu prazdnych poli form. Pozeral som na nete a implementoval som to do toho kodu,
ale mi to nefunguje a navyse neviem, ci to mam mat v extra subore a ako to potom prepojim, skusal som aj
iny kod ktory by sa mi pacil viac, lebo vraj ho po nevyplneni pola vrati spat aj s vyplnenymi udajmi na doplnenie,
ale im to nefunguje. Mohol by som pouzit kniznicu nette? aj keby som ho nepouzival?
Tu je ten moj nestastny kod:
1. subor

Kód: Vybrat vše

<?php

 if ($form):?>
 <form action="registracia1.php" method="post">
<table class="pridanie">
<tr><td>
Názov ubyt. zariadenia<input type="text" size="50" name="objekt" value="<? echo $objekt ?>"></input>
</td></tr>
<tr><td>
Meno priezvisko/Firma <input type="text" size="50" name="meno" value="<? echo $meno ?>"></input>
</td></tr>
<tr><td>Vaša adresa</td></tr>
<tr><td>
Ulica <input type="text" size="50" name="ulica" value="<?  $ulica ?>"></input>
</td></tr>
<tr><td>
Číslo <input type="text" size="10" name="cislo" value="<? echo $cislo ?>"></input>
</td></tr>
<tr><td>
Mesto/Obec <input type="text" size="50" name="mesto" value="<? echo $mesto ?>"></input>
</td></tr>
<tr><td>
PSČ <input type="text" size="6" name="psc" value="<? echo $psc ?>"></input>
</td></tr>
<tr><td>
E-mail <input type="text" size="50" name="mail" value="<? echo $mail ?>"></input>
</td></tr>
<tr><td>
www <input type="text" size="70" name="www" value="<? echo $www ?>"></input>
</td></tr>
<tr><td>
Mobil <input type="text" size="13" name="mobil" value="<? echo $mobil ?>"></input>
</td></tr>
<tr><td>
Prihlasovacie meno <input type="text" size="10" name="login" value="<? echo $login?>"></input>
</td></tr>
<tr><td>
Heslo <input type="text" size="10" name="password" value="<? echo  $password?>"></input>
</td></tr>
 <tr><td><INPUT TYPE="HIDDEN" NAME="send" VALUE="submitted">
<INPUT TYPE="SUBMIT" NAME="submit" VALUE="Odeslat vaše údaje!"></td></tr>
   </table></form>;
<? endif ?>


2.subor

Kód: Vybrat vše

<?php
//overenie formulara
$objekt_chyba=0;
$meno_chyba=0;
$ulica_chyba=0;
$cislo_chyba=0;
$mesto_chyba=0;
$psc_chyba=0;
$mail_chyba=0;
$www_chyba=0;
$mobil_chyba=0;
$login_chyba=0;
$password_chyba=0;
//zjištuje zda došlo k odeslání formuláre
if ($send !="submitted") {
echo"$form";
}
else {
if (empty($objekt)) {
echo "<b>Chyba:</b> Neuviedli ste oficiálny názov objektu!<br>";
$objekt_chyba=1;
}
if (empty($ulica)) {
echo "<b>Chyba:</b> Neuviedli ste Vaše meno!<br>";
$ulica_chyba=1;
}
if (empty($cislo)) {
echo "<b>Chyba:</b> Neuviedli ste číslo domu!<br>";
$cislo_chyba=1;
}
if (empty($mesto)) {
echo "<b>Chyba:</b> Neuviedli ste mesto!<br>";
$mesto_chyba=1;
}
if (empty($psc)) {
echo "<b>Chyba:</b> Neuviedli ste PSČ!<br>";
$psc_chyba=1;
}
if (empty($mail)) {
echo "<b>Chyba:</b> Neuviedli Vašu e-mailovú adresu!<br>";
$mail_chyba=1;
}
if (empty($www)) {
echo "<b>Chyba:</b> Neuviedli ste PSČ!<br>";
$www_chyba=1;
}
if (empty($mobil)) {
echo "<b>Chyba:</b> Neuviedli číslo telefónu alebo mobilu!<br>";
$mobil_chyba=1;
}
if (empty($login)) {
echo "<b>Chyba:</b> Neuviedli ste login/prihlasovacie meno!<br>";
$login_chyba=1;
}
if (empty($password)) {
echo "<b>Chyba:</b> Neuviedli ste heslo!<br>";
$password_chyba=1;
}

if (($objekt_chyba) || ($meno_chyba) || ($ulica_chyba) || ($cislo_chyba) || ($mesto_chyba) || ($psc_chyba) || ($mail_chyba) || ($www_chyba) || ($mobil_chyba) || ($login_chyba) || ($password_chyba)) {
echo "$form";
} else {
echo "dáta sa spracovávajú<br />";
}
}

$objekt = $_POST['objekt'];
$meno = $_POST['meno'];
$ulica = $_POST['ulica'];
$cislo = $_POST['cislo'];
$mesto = $_POST['mesto'];
$psc = $_POST['psc'];
$mail = $_POST['mail'];
$www = $_POST['www'];
$mobil = $_POST['mobil'];
$login = $_POST['login'];
$password = $_POST['password'];

$objekt=MySQL_Real_Escape_String($objekt);
$meno=MySQL_Real_Escape_String($meno);
$ulica=MySQL_Real_Escape_String($ulica);
$cislo=MySQL_Real_Escape_String($cislo);
$mesto=MySQL_Real_Escape_String($mesto);
$psc=MySQL_Real_Escape_String($psc);
$mail=MySQL_Real_Escape_String($mail);
$www=MySQL_Real_Escape_String($www);
$mobil=MySQL_Real_Escape_String($mobil);
$login=MySQL_Real_Escape_String($login);
$password=MySQL_Real_Escape_String($password);


$sql="INSERT INTO owners(objekt, meno, ulica, cislo, mesto, psc, mail, www, mobil, login, password) VALUES('$objekt', '$meno', '$ulica', '$cislo', '$mesto', '$psc', '$mail', '$www', '$mobil', '$login', '$password')";
$query=MySQL_Query($sql);

if($query){
echo "<center>Registrácia prebehla v poriadku. Teraz sa môžete <a href=\"../prihlasenie.php\">prihlásiť</a></center><br>";
}
elseif(mysql_errno()==1062){
echo "<center><span style=\"color:red\">Užívateľské meno </span><b>".htmlentities(StripSlashes($meno))."</b> <span style=\"color:red\">je obsadené, zvolte </span><a href=\"../registracny-form.php\">iné</a>.<br>".mysql_error()."</center>";
}
else {
echo "<center>Údaje sa nepodarilo vložiť! Vyplňte znova pozorne formular.<br><br>";
echo "<span style='color:red'>".MySQL_Error()."</span></center><br>";
}

mysql_close();
?>

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Nefunkcny kod na vkladanie dat do databazy

Příspěvekod CZechBoY » 20 úno 2012 20:13

nevim co ti na tom nejde, nenapsal si problém, tak jsem tam jen přidal returny a udělal pole chyb místo těch 20 proměnných (nebo kolika..)

PHP 2.subor píše:<?php
//overenie formulara
$chyba=Array();
//zjištuje zda došlo k odeslání formuláre
if ($send !="submitted") {
echo"$form";
return;
}
else {
if (empty($objekt)) {
$chyba[]="Neuviedli ste oficiálny názov objektu!";
}
if (empty($ulica)) {
$chyba[]="Neuviedli ste Vaše meno!";
}
if (empty($cislo)) {
$chyba[]="Neuviedli ste číslo domu!";
}
if (empty($mesto)) {
$chyba[]="Neuviedli ste mesto!";
}
if (empty($psc)) {
$chyba[]="Neuviedli ste PSČ!";
$psc_chyba=1;
}
if (empty($mail)) {
echo $chyba[]="Neuviedli Vašu e-mailovú adresu!";
}
if (empty($www)) {
echo $chyba[]="Neuviedli ste PSČ!";
}
if (empty($mobil)) {
echo $chyba[]="Neuviedli číslo telefónu alebo mobilu!";
}
if (empty($login)) {
echo $chyba[]="Neuviedli ste login/prihlasovacie meno!";
}
if (empty($password)) {
echo $chyba[]="Neuviedli ste heslo!";
}

if (count($chyba)>0) {
echo "<p>";
foreach($chyba as $ch)
echo "<span style='color:red'>Chyba: ".$ch."</span><br />";
echo "</p>";


echo $form;
return;
} else {
echo "dáta sa spracovávajú<br />";
}
}

$objekt = MySQL_Real_Escape_String($_POST['objekt']);
$meno = MySQL_Real_Escape_String($_POST['meno']);
$ulica = MySQL_Real_Escape_String($_POST['ulica']);
$cislo = MySQL_Real_Escape_String($_POST['cislo']);
$mesto = MySQL_Real_Escape_String($_POST['mesto']);
$psc = MySQL_Real_Escape_String($_POST['psc']);
$mail = MySQL_Real_Escape_String($_POST['mail']);
$www = MySQL_Real_Escape_String($_POST['www']);
$mobil = MySQL_Real_Escape_String($_POST['mobil']);
$login = MySQL_Real_Escape_String($_POST['login']);
$password = MySQL_Real_Escape_String($_POST['password']);
/*není potřeba, může se zapsat rovnou viz řádky nad tímto komentářem
$objekt=MySQL_Real_Escape_String($objekt);
$meno=MySQL_Real_Escape_String($meno);
$ulica=MySQL_Real_Escape_String($ulica);
$cislo=MySQL_Real_Escape_String($cislo);
$mesto=MySQL_Real_Escape_String($mesto);
$psc=MySQL_Real_Escape_String($psc);
$mail=MySQL_Real_Escape_String($mail);
$www=MySQL_Real_Escape_String($www);
$mobil=MySQL_Real_Escape_String($mobil);
$login=MySQL_Real_Escape_String($login);
$password=MySQL_Real_Escape_String($password);

*/

$sql="INSERT INTO owners(objekt, meno, ulica, cislo, mesto, psc, mail, www, mobil, login, password) VALUES('$objekt', '$meno', '$ulica', '$cislo', '$mesto', '$psc', '$mail', '$www', '$mobil', '$login', '$password')";
$query=MySQL_Query($sql);

if($query){
echo "<center>Registrácia prebehla v poriadku. Teraz sa môžete <a href=\"../prihlasenie.php\">prihlásiť</a></center><br>";
}
elseif(mysql_errno()==1062){
echo "<center><span style=\"color:red\">Užívateľské meno </span><b>".htmlentities(StripSlashes($meno))."</b> <span style=\"color:red\">je obsadené, zvolte </span><a href=\"../registracny-form.php\">iné</a>.<br>".mysql_error()."</center>";
}
else {
echo "<center>Údaje sa nepodarilo vložiť! Vyplňte znova pozorne formular.<br><br>";
echo "<span style='color:red'>".MySQL_Error()."</span></center><br>";
}

mysql_close();
?>
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

fili
Level 1.5
Level 1.5
Příspěvky: 102
Registrován: prosinec 11
Pohlaví: Muž
Stav:
Offline

Re: Nefunkcny kod na vkladanie dat do databazy

Příspěvekod fili » 20 úno 2012 22:09

Jaaaaj, prepac, to som cely ja. Mal som v provom subore chybu chybu if ($form):"?>
a nevidel som to ma tam byt ; nameisto :
Pokial ide o ten druhy subor, tak vysledkom je len nadpis stranky , ale ziadne hlaska,
ci uz ze je to v poriadku a moze sa uzivatel prihlasit, alebo chyba pri nevyplneni pola, niekde tam je asi chyba,
ale netusim kde a ten return by mal vratit formular na doplnenie alebo cisty na znova vyplnenie?

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Nefunkcny kod na vkladanie dat do databazy

Příspěvekod CZechBoY » 20 úno 2012 22:13

return zastaví provádění aktuálního skriptu, ale ne provádění všech skriptů (narozdíl od die/exit)

neivm jak to máš udělané takže jsem tam ty returny dal tak jak bych to dělal já :)

kdyžtak je dej pryč a budeš to muset zapodmínkovat
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

fili
Level 1.5
Level 1.5
Příspěvky: 102
Registrován: prosinec 11
Pohlaví: Muž
Stav:
Offline

Re: Nefunkcny kod na vkladanie dat do databazy

Příspěvekod fili » 02 dub 2012 08:22

co tam zapodmienkovat, ved su tam podmienky na kazde pole form

--- Doplnění předchozího příspěvku (20 Úno 2012 22:49) ---

och zabudol som, dal som ten return prec, ale ignoruje mi vypisanie chyby pri nevyplneni pola, chova sa tak ako by
boli vsetky vyplnene a ponuka prihlasenie

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Nefunkcny kod na vkladanie dat do databazy

Příspěvekod CZechBoY » 02 dub 2012 21:55

ten return by měl ukončit provádění toho souboru...
výpis chyb tam je dokonce dvakrát tak nevim proč ti to blbne

jsou tam asi 3 returny
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW


Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 7 hostů