Jump to content
php.lv forumi

Scripta nepilnības


euphoric

Recommended Posts

Iztēlosimies tādu situāciju : script.php ->

 

if ($_GET["data1"] == a)

{

$data1 = $_GET["data1"]

$vards = $_GET["vards"]

$pw = $_GET["pw"]

 

 

$sql = mysql_query("INSERT INTO table (dati1,vards,pw) VALUES ('$data1','$vards','$pw')");

 

if ($sql == 1) { kkāds kods. . . }

 

}

 

else {kkāds kods . . . }

 

Pieņemsim, ka "$_GET" pieprasījumā mēs saņemam svarīgus datus, no kuriem ir atkarīgs, lietotāja tālākais liktenis. (Tātad viņiem ir jābūt,precīziem.)

Kā lai to nodrošina ?

 

Jo tos viegli var mainīt, pat nepieredzējis programists.

 

www.site.lv/script.php?data1=a&vards=root&pw=123

Link to comment
Share on other sites

Es to daru tā

 

pirmalapa.php

$salt = "randomneuzminamaisstrings";
$hash = md5($vards1 . $pass . $othershit . $salt);

 

//padodam mainīgo hash kopā ar pārējiem get mainīgajiem

 

otraalapa.php

$salt = "randomneuzminamaisstrings"; //tāds kā pirmajā lapā
if($_GET['hash'] != md5($_GET['vards1'] . $_GET['pass'] . $_GET['othershit'] . $salt)){
 echo "Eu, čalīt, kaut kas nav riktīgi!";
}else{
 echo "Viss kārtībā, mainīgie valīdi :)";
}

 

 

 

Ja dati nav pārāk daudz, tad var arī tos bāzt masīvā, serializēt un vēl nokodēt ar base64_encode.

 

$d['n'] = 'Pēteris';
$d['p'] = 'pass';

$encoded = base64_encode(serialize($d));
$hash = md5($encoded . $salt);

Otrā lapā:

if($_GET['hash'] != md5($_GET['encoded'] . $salt)){
exit();
}else{
echo "Ok!";
}

$d = unserialize(base64_decode($_GET['encoded']));
print_r($d); //Te ir tas pats masīvs ar visiem datiem kas iepriekšējā skriptā

 

base64 ar aci nav atkodējams :) , bet tas palielina datu apjomu, ja daudz datu, būs baigi garš URL'is (limits ar kaut kāds bija)

 

 

Ceru ka noderēs!

Edited by briedis
Link to comment
Share on other sites

1. padoma vai nevar izmantot POST nevis GET ( ja dati nak no Formas tad izmanto GET

2. NEKAD !!! nepadod Usera Paroles Un LOGINU ar GET, Vienmer var atrast kadu citu risinajumu, Formu gadijuma kautvai tas pats POST varjants ( ja dati nak no Formas)

3. Ja dati nak jau no servera tad tos Vispar neparsuuti , bet izmanto kautvai $_SESSION mainiigo ...

4. NEKAD !!! Neraksti DB datus bez too parbaudes. ( DB ierakstiisanai izmanto kautvai primitiivu kombinaciju

$dati=trim($_GET['xxx']); // notiira liekos tuksumus no abam puseem 
$dati= mysql_real_escape_string($dati);

Tas ir pats minimums ko vari dariit ..

 

--

base64 ar aci nav atkodējams :) ,

 

Toties tas izraisa neveseliigu zinjkri kas notiks ja atkodees un iebaros citus datus...

// piedevam atkodesana tachu ir primitiiva , un lielakoties atri var noteikt ka tas ir BSE64 nevis teiksim MD5 ( kautvai peec simbolu skaita)

Edited by Grey_Wolf
Link to comment
Share on other sites

Liels paldies, noderēs noteikti.

 

Tomēr manā gadījumā ir nedaudz savādāk:

 

Sms pakalpojumu sniedzējs padod "$_GET", pieprasījumu uz script.php. Pieņemsim ja apmaksāts tad a==1, tadejādi ļaundaris zinot, kur atrodas un kā saucas "script.php", var saņemt pakalpojumu bez maxas!

 

Prasti runājot ir tā :

 

if(a==1)

{

Saņemam pārējos $_GET, ar textu ko sūta sms'kā,sms-id.

Ievadam datu bazē vajadzīgo info, noģenerēto pieejas kodu un kodu izvadam uz ekranu (kas tiek izvadīts uz ekrana, aiziet atbildes sms,lietotājam!)

}

 

Tā primitīvi apraxtīju, viss ir nedaudz sarežģītak, bet jebkurā gadījuma, zinot *.php atrašanās vietu uz kuru padodas $_GET, var viegli visu apiet !

Link to comment
Share on other sites

1. kar Nosledz normalu liigumu ar SMS pakalpojuma sniedzeju, un apstrada tikai tos datus kas sanjemti no SMS pakalpojuma sniedzeja.

Kur

1. jaietilpst tavaai parolei ( kurai jabuut pietiekami garai un sarezgitai)

2. tavam loginam ( arii nevajag izveleties primitiivu )

 

Piedevam parbaudi no kaadas IP nak pieprasijums, parasti ( vismaz normali ) SMS hosteri iedos tev savu serveru IP

attieciigi no citam IP vienkarshi nepakalpo ..

 

---

Attieciigi, pat zinot skripta atrasanaas vietu , neko pratiigu neieguusi, Ja vien neuzminesi paroli, loginu Un nemacesi nosimuleet IP.

Protams Shie ir tikai standarta Risinajumi, paliek vel arii Elektroniskais paraksts utt...

Link to comment
Share on other sites

Konkrēti man ir sadarbība ar esteria, nekādu ip adrešu sarakstu nepiedāvāja un nekādus loginus paroles arī ne. Tik nosūta GET pieprasījumu un viss.

...kaut kāds krievu kantoris, kā nekā :) Gadījies arī, ka pamaina sms cenu, nepaziņojot. Grauj jau tikai manu apmeklētāju uzticību :(

Link to comment
Share on other sites

Man arī esteria, pirms izvēlēties cītīgi, pārskatīju forumus, nekādu sliktu atsauksmju nemanīju. Tagad kad lieto sāk uzpeldēt, tā lūk.

Bet principā , ar to ip ir laba ideja.

Ja vinji paši negrib sniegt ip, tad var parbaudīt no kurienes nak pieprasījums. Man kā reiz scriptā, bij pievienots "REMOTE_ADDR", bet ja nemaldos ar pirmo pieprasījumu uzradas kkada adrese, bet ar otro vienk IP raxtas. Tūlinj iemetīšu aci, DB.

Link to comment
Share on other sites

a par IP vispar esi pajautajis??

nedomaju ka tas ir kautkas slepjams..

Piedevam tomer ruupiigi paskaties ko vinji piedava, diezvai nav kada primitiiva aisardziabs mehanisma..

Kautvai tas ko vinji atgriezj, vai tad tiesam tikai pieprasijumu ka sanjemta SMS??

neko vairak??

Ne usera tel nr, ne tekstu kas tika suutiits, neko no shii ??

Link to comment
Share on other sites

a par IP vispar esi pajautajis??

nedomaju ka tas ir kautkas slepjams..

Piedevam tomer ruupiigi paskaties ko vinji piedava, diezvai nav kada primitiiva aisardziabs mehanisma..

Kautvai tas ko vinji atgriezj, vai tad tiesam tikai pieprasijumu ka sanjemta SMS??

neko vairak??

Ne usera tel nr, ne tekstu kas tika suutiits, neko no shii ??

 

Esteriai ir izdevīgi tarifi.

 

Rekur ir tas, ko viņi GET'o

sms-id=%sms-id%&operator-id=%operator-id%&from=%from%&to=%to%&text=%text%&charged=

 

Aizsūtīšu sisadmina meilu, pajautāšu par kkādu drošību... Tech supports esteriai ir labs un ātrs :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...