Vse o PHPju
Ustvaril
publikum
, jul 24 2005 17:05
Odgovorov v temi: 1931
#624
Objavljeno 09 marec 2006 - 22:07
function popraviDatum($input)
{
list($leto, $mesec, $dan) = explode('-', $input);
return $dan . '.' . $mesec . '.' . $leto;
}
function popraviDatumVpis($input)
{
list($dan, $mesec, $leto) = explode('.', $input);
return $leto . '-' . $mesec . '-' . $dan;
}Prva funkcija se uporablja za izpis datuma iz podatkovne baze v obliki DD.MM.YYYY (vhodni string je v obliki YYYY-MM-DD), druga funkcija pa se uporablja za vpis datuma v podatkovno bazo (vhod in izhod sta obrnjena).
#626
Objavljeno 10 marec 2006 - 21:15
function popraviDatum($input)
{
list($leto, $mesec, $dan) = explode('-', $input);
return $dan . '.' . $mesec . '.' . $leto;
}
function popraviDatumVpis($input)
{
list($dan, $mesec, $leto) = explode('.', $input);
return $leto . '-' . $mesec . '-' . $dan;
}Huh, tole mi je pa dokaj neznano.
Kako naj sploh vstavim v kodo? Če hočem vpisati datum v tabelo "novice".
<?
include ('config.php');
if ($_POST['poslji_novico']){
$naslov = $_POST['naslov'];
$avtor = $_POST['avtor'];
$sporocilo = $_POST['sporocilo'];
$sql = "insert into novice VALUES (NULL, '$naslov', '$avtor', '$sporocilo')";
mysql_query($sql) or die("Napaka pri vnosu:<br />" .mysql_error());
echo "Novica poslana";
}
?>Kam dam?Hvala
#627
Objavljeno 11 marec 2006 - 08:33
mlavta1, datum v pravi obliki za tip polja DATE dobiš s funkcijo date() takole:
Mimogrede: si kaj razmišljal o varnosti te kode, ki si jo spisal? V tvojem primeru ti lahko vsak po potrebi izbriše vse podatke iz podatkovne baze ali pa počne druge stvari, za katere ni pooblaščen... :x
$datum = date("Y-m-d");Mimogrede: si kaj razmišljal o varnosti te kode, ki si jo spisal? V tvojem primeru ti lahko vsak po potrebi izbriše vse podatke iz podatkovne baze ali pa počne druge stvari, za katere ni pooblaščen... :x
#634
Objavljeno 11 marec 2006 - 19:27
simy456, en lep primer:
Ti seveda od uporabnika pričakuješ, da končni naslov izgleda nekako takole:
datoteka.php?polje1=nekaj&polje2=krneki
V tem primeru izgleda poizvedba takole:
SELECT * FROM tabela WHERE polje1 = 'nekaj' AND polje2 = 'krneki'
Lahko te pa uporabnik zafrkne in ti naredi tole:
datoteka.php?polje1 = nekaj'; DROP DATABASE mysql; SELECT * FROM tabela WHERE polje1 = 'aa
In potem poizvedba (oz. več poizvedb) izgleda takole:
SELECT * FROM tabela WHERE polje1 = 'nekaj'; DROP DATABASE mysql; SELECT * FROM tabela WHERE polje1 = 'aa' AND polje2 = 'krneki';
Tole je klasičen primer SQL injectiona, ki dokazuje, da je treba pri vsakem podatku, ki izvira od uporabnika poskrbeti, da ne vsebuje nobenih znakov, ki bi lahko poškodovali poizvedbo oz. da se te znake onemogoči (največkrat z backslashanjem).
<?php
$polje1 = $_GET['polje1'];
$polje2 = $_GET['polje2'];
mysql_query("SELECT * FROM tabela WHERE polje1 = '$polje1' AND polje2 = '$polje2'");
?>Ti seveda od uporabnika pričakuješ, da končni naslov izgleda nekako takole:
datoteka.php?polje1=nekaj&polje2=krneki
V tem primeru izgleda poizvedba takole:
SELECT * FROM tabela WHERE polje1 = 'nekaj' AND polje2 = 'krneki'
Lahko te pa uporabnik zafrkne in ti naredi tole:
datoteka.php?polje1 = nekaj'; DROP DATABASE mysql; SELECT * FROM tabela WHERE polje1 = 'aa
In potem poizvedba (oz. več poizvedb) izgleda takole:
SELECT * FROM tabela WHERE polje1 = 'nekaj'; DROP DATABASE mysql; SELECT * FROM tabela WHERE polje1 = 'aa' AND polje2 = 'krneki';
Tole je klasičen primer SQL injectiona, ki dokazuje, da je treba pri vsakem podatku, ki izvira od uporabnika poskrbeti, da ne vsebuje nobenih znakov, ki bi lahko poškodovali poizvedbo oz. da se te znake onemogoči (največkrat z backslashanjem).
#636
Objavljeno 11 marec 2006 - 23:16
publikum! Ko smo že pri varnosti, še enkrat bi rad vprašal. Že dolgo bi rad začel en projekt pa nikoli ne začnem. Ker se nonstop vprašam "Bo dovolj varno?".
Mene zanima kak hekati v strani. oz. vse o načinih o hekanju v php. SQL Injectioni, PHP Injectioni in XSS napadi! Rad bi vedel kako to delati da bi na moji strani to naredo (imam na local serveru) da vidim kje so šibke točke. In seveda rad bi vedel kak le te preprečiti. Seveda ko enkrat veš kak napasti stran in poznaš svojo kodo, potem ni težko popravit!
Hvala!
Mene zanima kak hekati v strani. oz. vse o načinih o hekanju v php. SQL Injectioni, PHP Injectioni in XSS napadi! Rad bi vedel kako to delati da bi na moji strani to naredo (imam na local serveru) da vidim kje so šibke točke. In seveda rad bi vedel kak le te preprečiti. Seveda ko enkrat veš kak napasti stran in poznaš svojo kodo, potem ni težko popravit!
Hvala!
#637
Objavljeno 12 marec 2006 - 11:08
MihaSkipster, za SQL injection sem že dal lep primer...
PHP injection je zelo redek, razen če uporabljaš funkcijo eval() in sorodne...
XSS napadi pa se ponavadi izvedejo tako, da v polje, kjer recimo ti od uporabnika pričakuješ, da bo vpisal nek svoj vpis, vstavi neko zlonamerno kodo, ki jo razume vsak spletni brskalnik - npr. JavaScript. In ko to stran gleda nek drug nič hudega sluteč uporabnik, se mu lahko na strani pokažejo razni popup-i, stran se lahko preusmeri na kakšno drugo, ipd.
XSS napadi se ponavadi preprečujejo s tem, da pri vseh poljih preprečiš vpis in/ali izpis JavaScript kode in podobnih. Ker funkcija str_replace tu ne zadostuje več, lahko uporabiš regularne izraze:
PHP injection je zelo redek, razen če uporabljaš funkcijo eval() in sorodne...
XSS napadi pa se ponavadi izvedejo tako, da v polje, kjer recimo ti od uporabnika pričakuješ, da bo vpisal nek svoj vpis, vstavi neko zlonamerno kodo, ki jo razume vsak spletni brskalnik - npr. JavaScript. In ko to stran gleda nek drug nič hudega sluteč uporabnik, se mu lahko na strani pokažejo razni popup-i, stran se lahko preusmeri na kakšno drugo, ipd.
XSS napadi se ponavadi preprečujejo s tem, da pri vseh poljih preprečiš vpis in/ali izpis JavaScript kode in podobnih. Ker funkcija str_replace tu ne zadostuje več, lahko uporabiš regularne izraze:
<?php
$content = 'Krneki....<script language="javascript">location.href = "http://www.racunalniske-novice.com";</script> Upajmo, da je varno';
$content = preg_replace("#<script(.*?)>(.*?)</script>#si", "", $content);
echo $content;
?>
#640
Objavljeno 12 marec 2006 - 16:40
V podatkovno bazo vnašam pilote! Vsak ima svojo številko ki si jo izbere! Če je številka $number enaka številki v bazi javi napako da je številka že zasedena!
Zdej sem pa skripto mal spremenil in sicer da poleg pilotovih podatkov vnašam še organizator_id da vem na kero tekmo tekmovalec spada! In problem se mi pojavi pri tem stavku ker bi moral vključit da mi še preveri samo tekmovalne številke pri pilotih ki imajo isti organizator_id!
No stavek sql sem napisal tko, vendar se vnos v bazo ne izvrši, kake napake pa mi tudi ne javi!
Hvala za pomoč!
$query=mysql_query("SELECT * FROM tekme WHERE number ='$number'") or die();
if (mysql_num_rows($query) > 0){
echo "<span class="pisava_red">Tekmovalna številka je žal že zasedena! Prosim izberi drugo !</span>";
}Zdej sem pa skripto mal spremenil in sicer da poleg pilotovih podatkov vnašam še organizator_id da vem na kero tekmo tekmovalec spada! In problem se mi pojavi pri tem stavku ker bi moral vključit da mi še preveri samo tekmovalne številke pri pilotih ki imajo isti organizator_id!
$query=mysql_query("SELECT * FROM tekme WHERE organizator_id = '$organizator_id' AND number ='$number'") or die();
if (mysql_num_rows($query) > 0){
echo "<span class="pisava_red">Tekmovalna številka je žal že zasedena! Prosim izberi drugo !</span>";
}No stavek sql sem napisal tko, vendar se vnos v bazo ne izvrši, kake napake pa mi tudi ne javi!
Hvala za pomoč!
Dodaj odgovor
1 član(ov) bere to temo
0 članov, 1 gostov, 0 anonimnih uporabnikov








