Jak zakodovat formular pred samotnym odeslanim – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Jak zakodovat formular pred samotnym odeslanim – PHP – Fórum – Programujte.comJak zakodovat formular pred samotnym odeslanim – PHP – Fórum – Programujte.com

 

Petr_Uk0
Duch
14. 3. 2014   #1
-
0
-

Tato cast kodu slouzi na to ze   $row['surname'] kterou jsem predtim vytahl z databaze musim odkodovat aby byla citelna pro uzivatele ktery v tom imputu muze zmenit svoje prijmeni pak klikne na tlacitko odeslat a to na dalsi strance pomoci dalsiho kodu otevre db a vlozi zakodovane data. Jak je videt z kodu pokousel jsem se to zakodovat primo v tom imputu ale bohuzel vysledek vzdy ukaze odkodovanou cast.

Jak na to? Data jsem overoval pomoci   var_dump ($_POST['surname']); 

Predem diky za radu.

<td class="dbtabletd100"><input name="surname" type="text" value="<?php $surname=base64_decode(htmlspecialchars($row['surname'])); echo $surname;  $surname2=$surname; $surname2=base64_encode ($surname); ?>" class="standardwidth100" /></td>
 

Nahlásit jako SPAM
IP: 78.148.224.–
Kit+15
Guru
14. 3. 2014   #2
-
0
-

#1 Petr_Uk
Proč to kóduješ? Běžně se jména nekódují, protože to nemá žádný význam.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Petr_Uk0
Duch
14. 3. 2014   #3
-
0
-

Ja bych to chtel zakodovat nebot chci mit zakodovane data v me databazi a rad bych to zakodoval pred odeslanim. Takze otazka je jak?

Nahlásit jako SPAM
IP: 78.148.224.–
Ericsko+3
Stálý člen
15. 3. 2014   #4
-
0
-

Mozem vediet preco to chces kodovat uz pred odoslanim?

Okrem toho, ze base64_encode zvacsi objem prenasanych dat, znemozni ti aj pouzitie validacie na strane servra. Jedine, ze by si to na servri zase dekodoval, zvalidoval, a potom zase enkodoval.

Ale to mi cele pride ako totalne zbytocne.

Nahlásit jako SPAM
IP: 88.212.34.–
Petr_Uk
~ Anonymní uživatel
21 příspěvků
15. 3. 2014   #5
-
0
-

Tato cast kodu je na prepsani dat v Databazi. Nactu data z databaze - rozkoduji aby byli citelne, uzivatel si vybere ktery zaznam upravit a zakoduji jen ID toho zaznamu a poslu. Pak ho rozkoduji a porovnam s databazi a ta vybere odpovidajici zaznamy a rozkoduje, Uzivatel je upravi a ............... to je ta pointa pri odesilani to chci zakodovat a poslat do db. Nechci mit citelne udaje v db. Kdyby se tam nekdo dostal udaje mu budou k nicemu.

Zatim mam vice otazek nez reseni. Kdyby nekoho napadlo SSL pracuji na tom, ale stejne bych to rad poslal primo z toho formulare zabezpecene.

Nahlásit jako SPAM
IP: 78.148.30.–
Ericsko+3
Stálý člen
15. 3. 2014   #6
-
0
-

#5 Petr_Uk
base64 je podla teba secure? Aby nikto nevidel co tam je? Ved rozkodovat to vie aj male dieta.

Musis nastudovat vela okolo security, lebo v tom nemas jasno. Base64 je urcene na kodovanie binarnych dat, aby bolo mozne ich transportovat bezpecne cez http, pripadne ulozit do databazy, rozhodne nie pre kodovanie textu. Navyse mat zakodovane textove data v databaze uplne znemoznuje pouzitie databazy na vsetko, naco ta databaza moze sluzit (napr. indexovanie, vyhladavanie).

Ale prosim, ak z nejakeho dovodu chces mat necitatelne data, musis ich nie kodovat, ale SIFROVAT nejakym klucom a nejakym na to urcenym sifrovacim algoritmom (sha, rsa). Problem je, ze ked ich chces sifrovat na strane servra, musis mat kluc ulozeny tam, kde je aj pristup k databaze, takze znova nie nepriestrelne riesenie. Ak ziskam pristup k tvojmu php servru, mam aj kluc aj pouzitu sifru a zase si bez problemov desifrujem data.

Co sa tyka sifrovania prenosu (https), to je samozrejme ziaduce, aby tvoje data neputovali po internete citatelne pre kazdy server, cez ktory idu, ale to je celkom ina pesnicka.

IMHO, pokial nerobis s TOP SECRET datami, alebo napr. prudko osobnymi udajmi, postaci mat server zabezpeceny a osetreny zmluvami, pre pripad uniku dat nie tvojou vinou.

Cize si predovsetkym si treba spravit poriadok v pomenovaniach:
- kodovanie (encoding/decoding) - prevod z jedneho formatu do druheho (v tvojom pripade base64 na prevod binarnych dat - napr. obrazku do textoveho formatu, podobne napr. url encoding, array to json encoding, skor je to po nasom konverzia, urcite je reverzibilna, nepouziva ziadne sifrovanie, cize nerobi sa pre potreby security, ale skor kvoli vhodnosti pre nasledne pouzitie (transport, storage)
- sifrovanie (encrypting/decrypting) - symetricke pouzitim jedneho kluca na encrypt aj decrypt, alebo asymetricke pouzitim verejneho kluca na encrypt a privatneho na decrypt

Nahlásit jako SPAM
IP: 88.212.34.–
Petr_Uk
~ Anonymní uživatel
21 příspěvků
15. 3. 2014   #7
-
0
-

Takze podle toho co tady pises je zbytecne kodovat jmena a hesla ulozena v DB jen proto ze jsou textova ? Kdyz clovek nakupuje na netu do databaze se ukladaji vetsinou textove udaje s celou adresou a obcas i data o pouzite kreditce a podle mne neni dobry napad to mit odkryte jen tak at si to kdokoliv precte kdo se tam dostane. Po pravde nechci studovat cele roky o security abych udelal par stranek s internetovym obchodem proto se ptam tady. Apropo myslel jsem si ze sha je jen jednostranna cesta nejde z toho zpetne zjistit co to bylo.  

Nahlásit jako SPAM
IP: 78.148.30.–
Kit+15
Guru
15. 3. 2014   #8
-
0
-

#7 Petr_Uk
Však to tvé kódování nijak nebrání tomu, aby si tu databázi kdokoli přečetl. A ty bezpečnostní díry, které určitě máš ve svých skriptech, mu to velmi usnadní.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Ericsko+3
Stálý člen
15. 3. 2014   #9
-
0
-

#7 Petr_Uk
Ano, sha sa pouziva na hashe a kluce, niektore data (napr. hesla sa cryptuju takto, porovnavaju sa potom uz len hashe, nie povodne retazce). Pouziva sa napr. aj na generovanie kryptovacich klucov. 

V ostatnom plati co ti pisal uz Kit, to, co robis nema so security nic spolocne. Ked hodis cislo kreditky do base64, precitam to s prstom v nose aj o polnoci. Security spociva v niecom celkom inom. Myslis si, ze niekto, kto sa dostane k tvojim datam na serveri uz nezvladne taku trivialnu vec ako base64_decode??? Nemusim na to ani pisat nejaky script, staci: SELECT FROM_BASE64('cislo_kreditky') FROM tabulka;

Nahlásit jako SPAM
IP: 88.212.34.–
Petr_Uk
~ Anonymní uživatel
21 příspěvků
15. 3. 2014   #10
-
0
-

Muzes mi prosinte napsat jake bezpecnostni chyby muzu udelat ve skryptech? Je pravda ze do toho moc nedelam tak se mi kazda rada hodi. Ja jen zatim prenasim data pres formular pomoci post a mam na jedne strance vytvorenou funkci na otevreni db  a pak tu stranu jen nactu kde potrebuji a aktivuji funkci. Tam bych videl problem nebot nevim nakolik je bezpecne nacitat funkci z jine stranky kde je vlastne jmeno a heslo k db.

Takze jak bys ty ulozil data do DB s tim ze tam bude napr udaj o kreditce a temito daty v budoucnu pracoval?

Diky moc za rady.

Nahlásit jako SPAM
IP: 78.148.30.–
Kit+15
Guru
15. 3. 2014   #11
-
0
-

#10 Petr_Uk
Velmi časté bývají tzv. SQL injection, které se u toho zastaralého ovladače databáze, který používáš, vyskytují poměrně často. Pokud neznáš funkci mysql_real_escape_string(), tak tam tu injekci zcela jistě máš.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Petr_Uk
~ Anonymní uživatel
21 příspěvků
15. 3. 2014   #12
-
0
-

Mas pravdu tu neznam. Pro pristup do DB pouzivam new PDO.

Nahlásit jako SPAM
IP: 78.148.30.–
Kit+15
Guru
15. 3. 2014   #13
-
0
-

#12 Petr_Uk
Aha, popletl jsem vlákna. PDO je samozřejmě nejmodernější a pokud se používají prepared statements, tak tam injekce nebývají. Na tu funkci můžeš zapomenout, v PDO je místo ní metoda quote(), která se však používá jen někdy.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Petr_Uk
~ Anonymní uživatel
21 příspěvků
15. 3. 2014   #14
-
0
-

Jestli muzes kdyz se podivas na nize uvedeny kod kde vidis bezpecnostni trhlinu a jak ji osetrit?

function OpenMyDBCl()

{

try {

$dbh = new PDO("mysql:host=host;dbname=tarzan", "databaze", "heslo");  //

$GLOBALS ['$dbh']=$dbh;

} catch (PDOException $e) {  // if not get the messagge

   print "<h3 class='bmessage'>Failed to connect to MySql</h3> " .  "<br/>" . $e->getMessage() ;

   require ('template/footer.phtml');

   die(); 

}

}

Na jine strance nactu   require ("connect.php");

  OpenMyDBCl(); 

  $dbhselect=$GLOBALS ['$dbh'];

  $sqlselect = 'SELECT * FROM my_address ORDER BY surname DESC';

  $resultsselect = $dbhselect->prepare($sqlselect);    

  $resultsselect->execute();  

<?php while($row = $resultsselect->fetch()){

Echo $row['surname'];

}

Nahlásit jako SPAM
IP: 78.148.30.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 19 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý