Stránka: 1 z 1
| [ Príspevkov: 9 ] | |
Autor | Správa |
---|
Registrovaný: 15.05.09 Prihlásený: 20.12.13 Príspevky: 81 Témy: 29 | 29 Bydlisko: Nitra |
zdravím nemám moc skúseností s ochranou... mohli by ste mi pomoct ako ochraniť tentp PHP script ?
Kód: <?php if(isset($_POST["ok_prevod"])) { if($_SESSION["captcha"] == $_POST["captcha"]) { $acc1 = $_POST["acc1"]; $pass1 = $_POST["pass1"]; $mail1 = $_POST["mail1"]; $www2 = $_POST["www2"]; $realm2 = $_POST["realm2"]; $acc2 = $_POST["acc2"]; $pass2 = $_POST["pass2"]; $mail2 = $_POST["mail2"]; $char2 = $_POST["char2"]; $poznamka2 = $_POST["poznamka2"]; mysql_query("INSERT INTO `prevod`(id,acc1,pass1,mail1,www2,realm2,acc2,pass2,mail2,char2,poznamka2,visible) VALUES(NULL, '$acc1', '$pass1', '$mail1', '$www2', '$realm2', '$acc2', '$pass2', '$mail2', '$char2', '$poznamka2',1);"); echo "<script>alert('Požadavak byl úspěšně odeslán, o průběhu budete informování e-mailem.')</script>"; } else { echo "<script>alert('Špatně opsaná captcha!')</script>"; } } echo " <br><br> <center><h3>Převod postav</h3></center><br> <br> - Prevod prebieha z dôveryhodných free serverov. (ktoré sú dôveryhodné rozhoduje sám admin)<br> - Rate serveru z ktorého sa prevádza nesmie byť väčší ako má eXperience tj. 2x.<br> - Je potrebné zadať údaje k prihláseniu na tento server + na server z ktorého chcete postavu previesť. Pokiaľ tieto údaje nevyplníte, admin sa nebude ďalej prevodom zaoberať.<br> - Prevádzajú sa postavy od lvl 35 a viac.<br> - Postava ktorá bude prevedená na náš server bude na pôvodnom kompletne zmazaná!<br> - Prevádzajú sa tieto veci:<br> - Všetky Skilly<br> - Goldy<br> - Bagy <br> - Itemy v bagu (len 16 itemov sa prevádza ktoré si vyberiete)<br> - Reputácie (len s dôležitými mestami)<br> - Zadajte <b>PLATNÝ</b> e-mail. Naň Vám potom príde informácia, či bola postava prevedená alebo nie.<br> - Všetky vaše otázky smerujte na fórum eXperience <a href=\"http://forum.wow-experience.eu/viewforum.php?f=46\">Fórum</a>.<br> - Vo formulári je potrebné vyplniť všetky údaje.<br> - Prevod prebehne v čo najkratšej dobe. <form action='#' name='post' method='post'> <table> <tr><td colspan='3'><b>Údaje k přihlášení na eXperience</b></td></tr><br> <tr></tr> <tr><td>Account</td><td><input type='text' name='acc1' value=''></td></tr> <tr><td>Heslo</td><td><input type='password' name='pass1' value=''></td></tr> <tr><td>E-mail</td><td><input type='text' name='mail1' value='@'></td></tr> <tr></tr> <tr><td colspan='3'><b>Údaje k přihlášení na server, ze kterého se bude převádět postava</b></td></tr><br> <tr></tr> <tr><td>Stránky serveru</td><td><input type='text' name='www2' value=''></td></tr> <tr><td>Realmlist</td><td><input type='text' name='realm2' value=''></td></tr> <tr><td>Account</td><td><input type='text' name='acc2' value=''></td></tr> <tr><td>Heslo</td><td><input type='password' name='pass2' value=''></td></tr> <tr><td>E-mail</td><td><input type='text' name='mail2' value='@'></td></tr> <tr><td>Název postavy k převedení</td><td><input type='text' name='char2' value=''></td></tr> <tr><td>Poznámka</td><td><textarea name='poznamka2' cols='28' maxlength='1000' rows='5'></textarea></td></tr> <tr><td>Opište prosím černé znaky: <br><img src=\"images/captcha.php\"></td><td><input type=\"text\" value=\"\" name=\"captcha\"></td></tr> </table><br> <center><input type='submit' class='button' name='ok_prevod'></center> </form>"; ?>
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 | 34 Bydlisko: Brno |
Pohladaj tu na fore v uzitocnych skriptoch fciu safety() od stenleyho. V podstate ide o to, osetrit znaky ', \, velmi sa hodi pridat aj htmlspecialchars() kvoli lt a gt. A odporucam kontrolovat aj format, napriklad ak je to pole email, tak pouzit vhodny regexp.
|
|
Registrovaný: 15.05.09 Prihlásený: 20.12.13 Príspevky: 81 Témy: 29 | 29 Bydlisko: Nitra |
takto by to mohlo byť ošetrené proti SQL injection?
Kód: <?php if(isset($_POST["ok_prevod"])) { if($_SESSION["captcha"] == $_POST["captcha"]) { $acc1 = strtoupper($_POST["acc1"]); $pass1 = sha_password($_POST["pass1"]); $mail1 = addslashes($_POST["mail1"]); $www2 = addslashes($_POST["www2"]); $realm2 = addslashes($_POST["realm2"]); $acc2 = strtoupper($_POST["acc2"]); $pass2 = sha_password($_POST["pass2"]); $mail2 = addslashes($_POST["mail2"]); $char2 = addslashes($_POST["char2"]); $poznamka2 = addslashes($_POST["poznamka2"]);
$sql = "INSERT INTO `prevod`(id,acc1,pass1,mail1,www2,realm2,acc2,pass2,mail2,char2,poznamka2,visible) VALUES(NULL,'$acc1','$pass1','$mail1','$www2','$realm2','$acc2','$pass2','$mail2','$char2','$poznamka2',1)"; mysql_query($sql); echo "<script>alert('Požadavak byl úspěšně odeslán, o průběhu budete informování e-mailem.')</script>"; } else { echo "<script>alert('Špatně opsaná captcha!')</script>"; } }
echo " <br><br> <center><h3>Převod postav</h3></center><br>
<br> - Prevod prebieha z dôveryhodných free serverov. (ktoré sú dôveryhodné rozhoduje sám admin)<br> - Rate serveru z ktorého sa prevádza nesmie byť väčší ako má eXperience tj. 2x.<br> - Je potrebné zadať údaje k prihláseniu na tento server + na server z ktorého chcete postavu previesť. Pokiaľ tieto údaje nevyplníte, admin sa nebude ďalej prevodom zaoberať.<br> - Prevádzajú sa postavy od lvl 35 a viac.<br> - Postava ktorá bude prevedená na náš server bude na pôvodnom kompletne zmazaná!<br> - Prevádzajú sa tieto veci:<br> - Equipment (celý)<br> - Všetky Skilly<br> - Goldy<br> - Bagy <br> - Itemy v bagu (len 16 itemov sa prevádza ktoré si vyberiete)<br> - Reputácie (len s dôležitými mestami)<br> - Zadajte <b>PLATNÝ</b> e-mail. Naň Vám potom príde informácia, či bola postava prevedená alebo nie.<br> - Všetky vaše otázky smerujte na fórum eXperience <a href=\"http://forum.wow-experience.eu/viewforum.php?f=46\">Fórum</a>.<br> - Vo formulári je potrebné vyplniť všetky údaje.<br> - Prevod prebehne v čo najkratšej dobe.
<form action='#' name='post' method='post'> <table> <tr><td colspan='3'><b>Údaje k přihlášení na eXperience</b></td></tr><br> <tr></tr> <tr><td>Account</td><td><input type='text' name='acc1' value=''></td></tr> <tr><td>Heslo</td><td><input type='password' name='pass1' value=''></td></tr> <tr><td>E-mail</td><td><input type='text' name='mail1' value='@'></td></tr> <tr></tr> <tr><td colspan='3'><b>Údaje k přihlášení na server, ze kterého se bude převádět postava</b></td></tr><br> <tr></tr> <tr><td>Stránky serveru</td><td><input type='text' name='www2' value=''></td></tr> <tr><td>Realmlist</td><td><input type='text' name='realm2' value=''></td></tr> <tr><td>Account</td><td><input type='text' name='acc2' value=''></td></tr> <tr><td>Heslo</td><td><input type='password' name='pass2' value=''></td></tr> <tr><td>E-mail</td><td><input type='text' name='mail2' value='@'></td></tr> <tr><td>Název postavy k převedení</td><td><input type='text' name='char2' value=''></td></tr> <tr><td>Poznámka</td><td><textarea name='poznamka2' cols='28' maxlength='1000' rows='5'></textarea></td></tr> <tr><td>Opište prosím černé znaky: <br><img src=\"images/captcha.php\"></td><td><input type=\"text\" value=\"\" name=\"captcha\"></td></tr>
</table><br> <center><input type='submit' class='button' name='ok_prevod'></center> </form>";
?>
|
|
Registrovaný: 04.04.08 Prihlásený: 27.02.12 Príspevky: 531 Témy: 27 | 27 Bydlisko: Nitra |
Čiastočne to zabezpečené máš. Pridaj ešte htmlspeciachars() príp. strip_tags() a mail, ako spomínal Ďuri, kontroluj cez reg. výraz a to isté aj s webom. Ešte by som ošetril aj tie $acc1 a $acc2.
_________________ V príprave... |
|
Registrovaný: 15.05.09 Prihlásený: 20.12.13 Príspevky: 81 Témy: 29 | 29 Bydlisko: Nitra |
P3CKIV píše: Čiastočne to zabezpečené máš. Pridaj ešte htmlspeciachars() príp. strip_tags() a mail, ako spomínal Ďuri, kontroluj cez reg. výraz a to isté aj s webom. Ešte by som ošetril aj tie $acc1 a $acc2.
ako by si ošetril $acc1 a $acc2 ? (som v tom len nováčik a učím sa)
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 | 34 Bydlisko: Brno |
No tak isto, ako si osetril tie ostatne:
Kód: $acc1 = strtoupper(addslashes($_POST["acc1"]));
|
|
Registrovaný: 15.05.09 Prihlásený: 20.12.13 Príspevky: 81 Témy: 29 | 29 Bydlisko: Nitra |
Ďuri píše: No tak isto, ako si osetril tie ostatne: Kód: $acc1 = strtoupper(addslashes($_POST["acc1"]));
aha... THX
ešte by som potreboval vysvetlit ako mam pouziť htmlspecialchar() lebo som to ešte nepoužíval
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 | 34 Bydlisko: Brno | |
Registrovaný: 09.07.08 Prihlásený: 17.01.15 Príspevky: 1585 Témy: 96 | 96 |
na ochránenie pred sql injection skús použiť prepared statements. Keď sa to naučíš používať skôr, ako získaš nesprávne návyky používaním addslashes a iných nefunkčných somarín, máš vyhraté.
http://andrejserafim.wordpress.com/2007 ... tatements/
ps. názov tejto témy je "php ochrana SQL" - prečo sem kua miešate htmlspecialchars?
|
|
Stránka: 1 z 1
| [ Príspevkov: 9 ] | |
|