> Regisztráció / Bejelentkezés rendszer > Profil > Admin panel > Hírek adminisztrálása > Kitiltások kezelése > Tulajdonosoknak admin adás menüpont > Szerver mutató > Csapat oldal > Userbar |
> SA-MPQuery API |
/* Hírek */
CREATE TABLE IF NOT EXISTS `web_news` (
`ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
`TITLE` text COLLATE utf8_hungarian_ci NOT NULL,
`CONTENT` text COLLATE utf8_hungarian_ci NOT NULL,
`ADDED` text COLLATE utf8_hungarian_ci NOT NULL,
`DATE` int(40) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_hungarian_ci AUTO_INCREMENT=1 ;
/* Felhasználók */
CREATE TABLE IF NOT EXISTS `web_users` (
`ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
`NAME` text COLLATE utf8_hungarian_ci NOT NULL,
`PASS` text COLLATE utf8_hungarian_ci NOT NULL,
`IP` varchar(20) COLLATE utf8_hungarian_ci NOT NULL DEFAULT \'0.0.0.0\',
`GROUP` int(2) NOT NULL DEFAULT \'0\',
`MONEY` int(90) NOT NULL DEFAULT \'0\',
`KILLS` int(90) NOT NULL DEFAULT \'0\',
`DEATHS` int(90) NOT NULL DEFAULT \'0\',
`SCORE` int(90) NOT NULL,
`EMAIL` text COLLATE utf8_hungarian_ci NOT NULL,
`REGDATE` int(90) NOT NULL,
`LASTONLINE` int(90) NOT NULL,
`BANNED` int(1) NOT NULL DEFAULT \'0\',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_hungarian_ci AUTO_INCREMENT=1 ;
Le a kalappal! ;) :thumbsup:Köszönöm
Ez nagyon-nagyon jó lett ;)
Csak a linket elirtad,mert nem kell: \" jel :D
[/quote]
Javítva.
Hogy lehet ezt elindítani vagy valami?Összekell kötni egy adatbázissal amivel a szerver is összevan.
Warning: fsockopen() [function.fsockopen]: UDP protocol is not allowed in /home/a7598082/public_html/inc/SampQuery.class.php on line 32
Warning: socket_set_timeout(): supplied argument is not a valid stream resource in /home/a7598082/public_html/inc/SampQuery.class.php on line 33
[/quote]
Miért kapom ezt a két warningot?
000webhost.
Miért kapom ezt a két warningot?
Warning: fsockopen() [function.fsockopen]: UDP protocol is not allowed in /home/a7598082/public_html/inc/SampQuery.class.php on line 32
Warning: socket_set_timeout(): supplied argument is not a valid stream resource in /home/a7598082/public_html/inc/SampQuery.class.php on line 33
000webhost.
[/quote]
UDP protocol is not allowed[/quote]
Nincs engedélyezve az UDP protokoll.
Magyarul, nem fog mûködni a \'Szerver állapota\' menüpont.
UDP protocol is not allowed[/quote]
Nincs engedélyezve az UDP protokoll.
Magyarul, nem fog mûködni a \'Szerver állapota\' menüpont.
Hogy tudnám engedélyezni?
Hogy tudnám engedélyezni?szolgáltatóval kell beszélni, de kétlem hogy engedélyezné. :)
szolgáltatóval kell beszélni, de kétlem hogy engedélyezné. :)
Hogy tudnám engedélyezni?
[/quote]Ahogy mondod, ingyeneseken nincsen általában UDP lehetõség, \"biztonsági okok\"-ra hivatkozva.
\"...= \'$_SERVER[REMOTE_ADDR]\' WHE...\"
\"...= \'\".$_SERVER[\'REMOTE_ADDR\'].\"\' WHE...\"
echo \"<div class=\'msgbox\'>$_GET[msg]</div>\";
if(file_exists(\"pages/$_GET[p].php\"))
{
require(\"pages/$_GET[p].php\");
}
Lenne 1-2 szakmai észrevételem ha megengeded.Üdv!
Nagyon sok helyen látom ezt:
\"...= \'$_SERVER[REMOTE_ADDR]\' WHE...\"
Ilyen formát nem szoktunk használni. Helyette:
\"...= \'\".$_SERVER[\'REMOTE_ADDR\'].\"\' WHE...\"
Ez a kód idõtállósága miatt fontos. Az elõbbi kódrészlet hivatalosan nincsen, és bár még (ebben a verzióban) mûködik, nem tudjuk meddig.
Ez minden asszociatív (nem számmal indexelt) tömbnél fontos. Nincs $tomb[elem] csak $tomb[\"elem\"] vagy $tomb[\'elem\'].
Még egy idõtállósági dolog (Kis biztonság is) . Ilyen MySql függvényeket nem használunk. Igen, régen csak ez volt és rengeteg minden ezzel van írva, de újabb fejlesztéseknél messzire elkerüljük. A jelenlegi stabil php verzió az 5.4 , ezek a MySql függvények amiktõl hemzseg a kód, a php 5.5-ben már hibaüzeneteket fognak dobni, (régi függvény, kéri hogy használj mást) a jövõben meg teljesen ki lesznek iktatva. Ajánlom: MySqli,PDO (Személy szerint a PDO-t preferálom, illetve nézz utána az elõkészített lekérdezéseknek, PDO és MySqli is támogatja.) A szimpla MySql függvények lecserélése a biztonsági kérdéseket is megvariálja. A mysql_query függvény nem tud egyszerre több parancsot végrehajtani (Pl. nem tudsz egyszerre kiválasztani értékeket és törölni valamit egy lekérdezésben, tárolt eljárások nélkül). A PDO/MySqli viszont igen, ezért azok veszélyesebbek. Természetesen erre is van megoldás. (Elõkészített lekérdezések)
Admin függvények egyáltalán nincsenek szûrve. Ez végzetes hiba. Egy laikus/\"bosszúvágyú\" admin bármit megtehet, ha pedig olyan is hozzáférhet a panelhez adminként aki egyébként a szerveren/egyéb helyen nem rendelkezik jogokkal akkor az kellemetlen. Igaz, amíg van mysql_query ami csak 1 lekérdezést küld kicsit nehezebb dolga van (nem töröl instant adatbázist), de tényleg nem kéne ennek a függvénynek ezt a hátrányát biztonsági elõnyként kezelni, pl. lekérések feltételeit meg lehet kerülni könnyedén.
Sok kimeneti hibaüzenet szintén nincsen ellátva szûréssel, így azokba gyilkos JavaScript kódokat lehet injectelni.
echo \"<div class=\'msgbox\'>$_GET[msg]</div>\";
http://www.php.net/manual/en/function.strip-tags.php
http://php.net/manual/en/function.htmlspecialchars.php
http://www.php.net/manual/en/function.htmlentities.php
Ezzel az ügyeskedéssel a weblapot nem lehet feltörni. Vagyis önmagában nem. Ezzel a módszerrel felhasználókat lehet lopni, anélkül hogy szerencsétlen xy egyáltalán ezt észlelné. (Természetesen nem fejtem ki :) ) Pontosítok. Csak (bejelentkezett) admin felhasználókat lehet lopni vele. Az admin felületrõl már beszéltünk. Nem egyszerû ezt sem megcsinálni, de meg lehet.if(file_exists(\"pages/$_GET[p].php\"))
{
require(\"pages/$_GET[p].php\");
}
Kritikus php/szerver sebezhetõségi hiba, beállításoktól függõen. Ezzel a módszerrel tulajdonképpen bármilyen fájlt be tudok ágyazni illetve lefuttatni a php motor segítségével. Mint említettem, ezzel a php.ini-tõl függõen még akár helyben beinjectelhetem magát a php-t és helyben módosíthatom a forrást. (Vagy azt csinálok vele amit akarok) Miután azt futtatok amit akarok, adatbázisom is van. Igen, ott van hogy \"pages/\" az elején illetve a \".php\" a végén, de ezek lényegtelen információk amiket csupán az url-hez fûzött összesen 6 karakterrel el is távolítottam, onnantól meg csak a szûretlen változó van. A file_exists csak azt nézi létezik-e a fájl. Nem érdekli hogy hol van. Ha túl nagy jogköre lenne a szerveren ennek az oldalnak akkor már a szervert lehetne kóstolgatni, onnan meg hátulról minden mást ami rajta van. (Pl. ha nem rendesen beállított hostolt környezetben fut az oldal.) Ez a sebezhetõség függ a php verziójától is. 5.3.4 elõtt azt hiszem veszélyesebb volt, a frissebb php-k mintha már figyelnek a kiterjesztés eltüntetésére, de még sok helyen van 5.3.3 sõt még 5.2 is. Igazából azt se szeretnéd ha bármely php fájl ami csak megtetszene beágyaznék.
Ajánlom hogy reguláris kifejezésekkel távolíts el a változóból mindent ami nem betû,esetleg szám.
Egy tömbben tárolhatod hogy milyen oldalak vannak (http://php.net/manual/en/function.scandir.php) és ha nem szerepel a tömbben a változó akkor ne jelenítsd meg az oldalt.
Stb...
Regisztrációnál nem ellenõrzöd az E-Mail cím valódiságát. Simán lehet tolni egy \"a@a\" semmiséggel egy felhasználót, ha rászánnék egy percet bármilyen más karakterlánccal is. A kliens oldali HTML5(ami nálad van)/JavaScript ellenõrzés nem valódi ellenõrzés.
Felhasználónév és jelszó hosszát ajánlom korlátozni. (Minimum/maximum)
Felhasználónévbe írható karaktereket ajánlom leszûkíteni betûkre/számokra.
Egy kis adatbázis tervezési észrevétel. Azoktól a nagybetûktõl az oszlop nevek nagyon menõn néznek ki meg minden. Kár hogy Windows/Linux kompatibilitási gondot okozhatnak.
Csak belenéztem a kódba, ezeket nem feltétlenül azért írtam hogy most azonnal javíts/írj át mindent vagy ilyesmi,ócsárolni sem volt szándékom, csupán szerintem ezeket a dolgokat hasznos tudni a jövõbeli projektjeid tervezésénél.
website v0.1
Elkészítettem egy weboldalt, amit publikálásra szántam.. Íme hát itt van!http://s1.postimg.org/lt5oa1on3/web_146.png[/img]
http://s1.postimg.org/skw3cwdmn/web_148.png[/img]
http://s1.postimg.org/7cievgz5r/web_149.png[/img]
http://s1.postimg.org/4wglhmh33/web_150.png[/img]
http://s1.postimg.org/hcdbbdaf3/web_151.png[/img]
http://s1.postimg.org/7ggtpgu0v/web_152.png[/img]
http://s1.postimg.org/m0xwkaozj/web_153.png[/img]
http://s1.postimg.org/52yvygflr/web_155.png[/img]
http://s1.postimg.org/g3u13h7un/web_156.png[/img]
http://s1.postimg.org/s6zcr1iwv/web_157.png[/img]
http://s1.postimg.org/ooncuni0v/web_158.png[/img]
http://s1.postimg.org/6n47wunzz/web_159.png[/img]
http://s1.postimg.org/iq9jkez27/web_160.png[/img]
http://s1.postimg.org/605b7br3z/web_161.png[/img]
http://s1.postimg.org/lt5oa1on3/web_146.png
http://s1.postimg.org/skw3cwdmn/web_148.png
http://s1.postimg.org/7cievgz5r/web_149.png
http://s1.postimg.org/4wglhmh33/web_150.png
http://s1.postimg.org/hcdbbdaf3/web_151.png
http://s1.postimg.org/7ggtpgu0v/web_152.png
http://s1.postimg.org/m0xwkaozj/web_153.png
http://s1.postimg.org/52yvygflr/web_155.png
http://s1.postimg.org/g3u13h7un/web_156.png
http://s1.postimg.org/s6zcr1iwv/web_157.png
http://s1.postimg.org/ooncuni0v/web_158.png
http://s1.postimg.org/6n47wunzz/web_159.png
http://s1.postimg.org/iq9jkez27/web_160.png
http://s1.postimg.org/605b7br3z/web_161.png
Amit tartalmaz
> Regisztráció / Bejelentkezés rendszer
> Profil
> Admin panel
> Hírek adminisztrálása
> Kitiltások kezelése
> Tulajdonosoknak admin adás menüpont
> Szerver mutató
> Csapat oldal
> Userbar
Felhasznált dolgok
> SA-MPQuery API
Letöltés
web.zip
web.rar
webpage.sql
/* Hírek */
CREATE TABLE IF NOT EXISTS `web_news` (
`ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
`TITLE` text COLLATE utf8_hungarian_ci NOT NULL,
`CONTENT` text COLLATE utf8_hungarian_ci NOT NULL,
`ADDED` text COLLATE utf8_hungarian_ci NOT NULL,
`DATE` int(40) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_hungarian_ci AUTO_INCREMENT=1 ;
/* Felhasználók */
CREATE TABLE IF NOT EXISTS `web_users` (
`ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
`NAME` text COLLATE utf8_hungarian_ci NOT NULL,
`PASS` text COLLATE utf8_hungarian_ci NOT NULL,
`IP` varchar(20) COLLATE utf8_hungarian_ci NOT NULL DEFAULT \'0.0.0.0\',
`GROUP` int(2) NOT NULL DEFAULT \'0\',
`MONEY` int(90) NOT NULL DEFAULT \'0\',
`KILLS` int(90) NOT NULL DEFAULT \'0\',
`DEATHS` int(90) NOT NULL DEFAULT \'0\',
`SCORE` int(90) NOT NULL,
`EMAIL` text COLLATE utf8_hungarian_ci NOT NULL,
`REGDATE` int(90) NOT NULL,
`LASTONLINE` int(90) NOT NULL,
`BANNED` int(1) NOT NULL DEFAULT \'0\',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_hungarian_ci AUTO_INCREMENT=1 ;
[/spoiler
krook,le a kalappal elõtted!- Cím: [MYSQL] UCP / WEBOLDAL v0.1
Írta: blackdog476 - 2014. augusztus 10. - 09:38:55- Fel a kalappal!
:wall:
Amúgy jó lett grat :D
Mr_Jack, tudtommal régi témákhoz nem-igen kéne hozzászólni nem? :unsure:
FONTOS!!
Akármilyen szép és jó, azért hiba az még van benne.. Próbáltad úgy letesztelni krook, hogy a settings.php-ben másik adatbázisnevet adsz meg? Hm, ugyanis a func.php-ben a regisztrációnál nem a settings.phpbõl importálja be a beállítást :confused:
function Register($user2, $pass2, $mail2) {
mysql_query(\"SET NAMES UTF8\");
$user = mysql_real_escape_string($user2);
$pass = sha1(mysql_real_escape_string($pass2));
$mail = mysql_real_escape_string($mail2);
$time = time();
$vane = mysql_num_rows(mysql_query(\"SELECT * FROM web_users WHERE NAME = \'$user\'\"));
if($vane == 0 && !empty($user2) && !empty($pass2) && !empty($mail2) ) {
mysql_query(\"INSERT INTO `krukveb`.`web_users` (`ID`, `NAME`, `PASS`, `IP`, `GROUP`, `MONEY`, `KILLS`, `DEATHS`, `SCORE`, `EMAIL`, `REGDATE`, `LASTONLINE`, `BANNED`) VALUES (NULL, \'$user\', \'$pass\', \'$_SERVER[REMOTE_ADDR]\', \'0\', \'0\', \'0\', \'0\', 0, \'$mail\', \'$time\', \'$time\', 0);\");
//mail($mail, \"Üdvözöllek!\", \"Szia $user!\\nEzt a mailt azért kapod mert regisztráltál a szerverre!\\n\\nNév: $user\\nÜdvözlettel: Valaki\"); # Ha támogatja az email küldést a szolgáltatód akkor vedd ki a //-t
echo \'Sikeres regisztráció! Mostmár bejelentkezhetsz!\';
}
else {
echo \'Valami üresen maradt, vagy már létezik a felhasználónév!\';
}
}
A querynél van, én most csak simán átállítottam, de oda php kéne :/- Cím: [MYSQL] UCP / WEBOLDAL v0.1
Írta: Mr_Jack - 2014. augusztus 10. - 22:27:11 Mr_Jack tudtommal régi témákhoz nem-igen kéne hizzászólni nem? :unsure:[/quote]
Pfff... Hol láttad ezt? Mert én a fórumon nem láttam ilyesmit... De most komolyan,jó páran hozzászóltak régi témákhoz,semmit nem kaptak :noexpression:- Cím: [MYSQL] UCP / WEBOLDAL v0.1
Írta: blackdog476 - 2014. augusztus 11. - 09:20:09- Elég baj. Ha én pl hozzászólnék ehhez a témához, hogy jó lett, akkor az most kit fog érdekelni, hogyha már rég lejárt, ha már rég újabb dolgok vannak a fórumon, hogyha már a fórum is üzen hogy nem kéne.... ?
Valamint ilyesmit nem láttál?![]()
- Cím: [MYSQL] UCP / WEBOLDAL v0.1
Írta: b1s - 2014. augusztus 16. - 09:20:44- bump.
mint utóbb kiderült, van néhány biztonsági rés az UCP-ben, elég régen írtam már.. mindenkinek csak saját felelõsségre ajánlom, mindenki javítsa ki a hibákat, hamarosan elõfordulhat, hogy kiadok egy javított változatot. :)- Cím: [MYSQL] UCP / WEBOLDAL v0.1
Írta: Almosvezer1 - 2014. augusztus 17. - 15:45:48- Helló. baj van :/ (utálom az ilyen mysql-os dolgokat.....)
ahh.. betettem a WAMP progival ahogy kell, phpmyadminba csináltam egy adatbázist, abba feltöltöttem az SQL-t amit te is feltettél ide, beolvasta rendesen, func.php-be átírtam így:
$db_con = mysql_connect($sql[\"samp\"], $sql[\"samp\"], $sql[\"samp\"]);
$db_db = mysql_select_db($sql[\"samp\"]);
(már bepipultam és mindennek a sampot írtam...) és semmi.. csak ez a hiba:
( ! ) Notice: Undefined index: samp in D:\\wamp\\www\\inc\\func.php on line 6
Call Stack
# Time Memory Function Location
1 0.0010 142544 {main}( ) ..\\index.php:0
2 0.0020 178784 require_once( \'D:\\wamp\\www\\inc\\func.php\' ) ..\\index.php:3
( ! ) Notice: Undefined index: samp in D:\\wamp\\www\\inc\\func.php on line 6
Call Stack
# Time Memory Function Location
1 0.0010 142544 {main}( ) ..\\index.php:0
2 0.0020 178784 require_once( \'D:\\wamp\\www\\inc\\func.php\' ) ..\\index.php:3
( ! ) Notice: Undefined index: samp in D:\\wamp\\www\\inc\\func.php on line 6
Call Stack
# Time Memory Function Location
1 0.0010 142544 {main}( ) ..\\index.php:0
2 0.0020 178784 require_once( \'D:\\wamp\\www\\inc\\func.php\' ) ..\\index.php:3
( ! ) Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in D:\\wamp\\www\\inc\\func.php on line 6
Call Stack
# Time Memory Function Location
1 0.0010 142544 {main}( ) ..\\index.php:0
2 0.0020 178784 require_once( \'D:\\wamp\\www\\inc\\func.php\' ) ..\\index.php:3
3 0.0117 216048 mysql_connect ( ) ..\\func.php:6
( ! ) Notice: Undefined index: samp in D:\\wamp\\www\\inc\\func.php on line 7
Call Stack
# Time Memory Function Location
1 0.0010 142544 {main}( ) ..\\index.php:0
2 0.0020 178784 require_once( \'D:\\wamp\\www\\inc\\func.php\' ) ..\\index.php:3
Nem tudtam csatlakozni az adatbázishoz: Aucune base n\'a été sélectionnée
Válaszod elõre köszönöm.
Ha én b*tam el valamit, akkor sry.- Cím: [MYSQL] UCP / WEBOLDAL v0.1
Írta: blackdog476 - 2014. augusztus 22. - 18:53:27 Aucune base n\'a été sélectionnée[/quote] Én félek.
Egyébként a csatlakozás + kiválasztós résznél lesz a gond, mivel mindenhova ugyan azt az adatot adtad meg.
Helyesen így kell:
mysql_connect(HOST,FELHASZNÁLÓNÉV,JELSZÓ);
mysql_select_db(ADATBÁZIS NEVE);
A host az legyen localhost, a felhasználónév legyen root és a jelszó résznél csak simán \"\" legyen (tehát semmi).
Utána létre kell hozni egy adatbázist, és az adatbázis nevéhez kell írni.
Peace- Cím: [MYSQL] UCP / WEBOLDAL v0.1
Írta: Falamatistic - 2014. augusztus 29. - 19:02:43- De ha nagyon átláthatóan szeretnéd, igaz kicsit bonyolultabb akkor így is megoldhatod.
// Beállítások
$mysql[\'host\']= \"localhost\"; // Mysql hoszt név
$mysql[\'user\']= \"a\"; // Felhasználó
$mysql[\'pass\']= \"a\"; // Jelszó
$mysql[\'adatbazis\']= \"a\"; // Adatbázis
// Mysql Csatlakozás
$mysql_kap= mysql_connect($mysql[\'host\'], $mysql[\'user\'], $mysql[\'pass\'])or die(mysql_error());
mysql_selectdb($mysql[\'adatbazis\'], $mysql_kap)or die(mysql_error());
mysql_query(\"SET NAMES utf-8\", $mysql_kap);- Cím: [MYSQL] UCP / WEBOLDAL v0.1
Írta: blackdog476 - 2014. augusztus 29. - 19:26:51- WAT?
// Beállítások
$mysql = array(
\'host\' => \'localhost\',
\'user\' => \'root\',
\'pass\' => \'\',
\'adatbazis\' => \'mysql\'
);
// Mysql Csatlakozás
$mysql_kap= mysql_connect($mysql[\'host\'], $mysql[\'user\'], $mysql[\'pass\'])or die(mysql_error());
mysql_selectdb($mysql[\'adatbazis\'], $mysql_kap)or die(mysql_error());
mysql_query(\"SET NAMES utf-8\", $mysql_kap);- Cím: [MYSQL] UCP / WEBOLDAL v0.1
Írta: KisCsavo15 - 2014. szeptember 02. - 00:54:12- Azz nagyon jó lett, grat
- Cím: [MYSQL] UCP / WEBOLDAL v0.1
Írta: Benedek - 2014. október 16. - 20:01:55- És az SQL Injection védve van rajta ? :\'D
- Cím: [MYSQL] UCP / WEBOLDAL v0.1
Írta: halasz11 - 2015. február 06. - 16:12:12- Nekem majdnem minden jó szép lett! :facepalm:
Csak amikor beregisztrálnék és utána belépnék mindig azt írja ki: A felhasználónév nem létezik!- Cím: [MYSQL] UCP / WEBOLDAL v0.1
Írta: blackdog476 - 2015. február 06. - 18:23:28 Idézetet írta: Benedek date=1413482515\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"37287\" data-ipsquote-contentclass=\"forums_TopicÉs az SQL Injection védve van rajta ? :\'DHa jól emlékszem nincs, vagy nem mindenhol. Egyébként nem ajánlott már ezt használni, elavult.
- Cím: [MYSQL] UCP / WEBOLDAL v0.1
Írta: b1s - 2015. február 07. - 16:12:43- XSSelhető, injectelhető, nem ajánlom a használatát senkinek. Rég volt, mikor ezt írtam.