Jump to content
dariusmare

[Help]Este sigur?

Recommended Posts

Salutare, trebuie sa folosesc o pagina web pentru a returna niste infromatii pentru un proiect in c#, dar in aceleasi timp vreau ca pagina sa fie securizata, sa nu poata nimeni sa o acceseze inafara de mine asa ca m-am gandit la asta:

Sa presupunem ca parola este 123, cu codul asta

<?php
$password = $_GET["password"];

if(MD5($password) == "202cb962ac59075b964b07152d234b70") // 202cb962ac59075b964b07152d234b70 fiind 123 in md5
{
//restul codului
}
?>

si voi folosi asa:

www.mywebsite.com/getinfo.php?getstuff=true&password=123

Este sigura metoda aceasta? I se poate face bypass? Alte metode?

Link to comment
Share on other sites

De ce nu folosesti mai simplu $_SERVER['REMOTE_ADDR'] ? Iti pui adresa ta ip acolo si aia e.

De asemenea, ai putea folosi htaccess pe director (sau reguli cu allow from ... deny from all in htaccess)

Sau combina-le: Password + verificare adresa ip remote (sa se indeplineasca ambele conditii)

Link to comment
Share on other sites

@Robert1995, tex Multumesc pentru raspuns!

Edit: Eu veau ca daca cineva foloseste WireShark cu aplicatia mea sa nu poata folosi linkul separat de aplicatie. Dar acum imi dau seama ca nu merg nicinua din variantele acestea.(aplicatia va fi distribuita)

Acum, ca sa nu mai fac alt post, mai am o problema. Eu vreau sa folosesc $_GET() ca sa preiau un string multiline cum pot face asta?

Ce am incercat:

/get.php?text='this'."\r\n".'text2'
/get.php?text=this\r\ntext2

COD PHP:


$message = $_GET["text"];
echo $message;

Vreau sa se afiseze:

text
text2

Edited by dariusmare
Link to comment
Share on other sites

c? po?i spoofa traficul

Traficul se sniff-eaza, nu spoof-eaza.

Chestia aia cu md5 ce ai facut-o tu, e cam degeaba.

Cel mai simplu, sigur si eficient, dupa parerea mea, e sa restrictioneazi accesul din .htaccess

Un exemplu ar fi


order deny,allow
deny from all
allow from 111.222.333.444

Unde 111.222.333.444 e ip-ul de pe care sa faci request.

Link to comment
Share on other sites

...dar...

dac? link-ul poate fi accesat doar de tine ?i numai de tine, po?i schimba variabila "password" în ceva random pe care doar tu o ?tii.

iar dac? passwordul este gre?it, nu afi?a nici un mesaj de gen "parola este incorect?", etc...

@Robert1995 +1

@GarryOne la faza cu ip-ul ar fi un "-", pentru c? este foarte posibil s? aibe ip dinamic...

Link to comment
Share on other sites

@GarryOne la faza cu ip-ul ar fi un "-", pentru c? este foarte posibil s? aibe ip dinamic...

Pot seta din router sa imi dea ip static.

Problema e, cum am specificat 2 posturi mai sus: Aplicatia mea va fi distribuita si eu veau ca daca cineva foloseste WireShark cu aplicatia mea si ia adresa paginii respective, sa nu poata folosi linkul separat de aplicatie. Dar acum ca stau si ma gandesc putin mi-am dat seama ca nu merg niciuna din variantele acestea.

Link to comment
Share on other sites

ar acum ca stau si ma gandesc putin mi-am dat seama ca nu merg niciuna din variantele acestea.

Cum ti-ai dat seama? Nu e adarat. Chiar daca se sniffeaza cu wireshark, o sa poata gasi doar ip-ul serverului pe care sa face request, atat tot, insa daca faci restrictiarea dupa ip, din .htaccess, nu o sa-ti poata accesa link-ul, in veci, de pe alt ip decat cel care l-ai pus tu acola, la allow.

Edited by GarryOne
Link to comment
Share on other sites

Corect, dar trebuie si c# sa stie sa il decripteze.

Ok. Multumesc tuturor pentru raspunsuri. O problema e rezolvata.

Cat despre cealalta? Va dau din nou enuntul:

Vreau sa folosesc $_GET() ca sa preiau un string multiline cum pot face asta?

Ce am incercat:

/get.php?text='this'."\r\n".'text2'
/get.php?text=this\r\ntext2

COD PHP:


$message = $_GET["text"];
echo $message;

Vreau sa se afiseze:

text
text2

Link to comment
Share on other sites

@dariusmare, referitor la a 2-a intrebare a ta. Depinde unde vrei sa afisezi. Daca in browser, ai nevoie de "<br/>", daca in fisier sau in alta parte de "\n\r". Cu toate acestea, nu e recomandat sa trimiti siruri mari de caractere prin GET. GET are capacitate mult mai mica ca POST.

Link to comment
Share on other sites

@dariusmare, referitor la a 2-a intrebare a ta. Depinde unde vrei sa afisezi. Daca in browser, ai nevoie de "<br/>", daca in fisier sau in alta parte de "\n\r". Cu toate acestea, nu e recomandat sa trimiti siruri mari de caractere prin GET. GET are capacitate mult mai mica ca POST.

Vreau sa trimit email, dar voi trimite direct din link, fara nici o alta pagina cu forms.

Link to comment
Share on other sites

Vreau sa trimit email, dar voi trimite direct din link, fara nici o alta pagina cu forms.

Po?i folosi undeva la 2.000 caractere în link.

Most webservers have a limit of 8192 bytes (8KB), which is usually configureable somewhere in the server configuration. As to the client side matter, the HTTP 1.1 specification even warns about this, here's an extract of chapter 3.2.1:

Note: Servers ought to be cautious about depending on URI lengths above 255 bytes, because some older client or proxy implementations might not properly support these lengths.

The limit is in MSIE and Safari about 2KB, in Opera about 4KB and in Firefox about 8KB. We may thus assume that 8KB is the maximum possible length and that 2KB is a more affordable length to rely on at the server side and that 255 bytes is the safest length to assume that the entire URL will come in.

If the limit is exceeded in either the browser or the server, most will just truncate the characters outside the limit without any warning. Some servers however may send a HTTP 414 error. If you need to send large data, then better use POST instead of GET. Its limit is much higher, but more dependent on the server used than the client. Usually up to around 2GB is allowed by the average webserver. This is also configureable somewhere in the server settings. The average server will display a server-specific error/exception when the POST limit is exceeded, usually as HTTP 500 error.

fara nici o alta pagina cu forms.

Nu trebuie s? ai o pagin? separat? cu 'custom inputs' s? po?i folosi POST..

Link to comment
Share on other sites

El vrea sa DISTRIBUIE apicatia.

Adica eu sa o descarc, sa folosesc wireshark sa vad ce requesturi face aplicatia, dar sa nu pot vedea ce vede aplicatia.

Poti folosi o autentificare "client-side", prin rezolvare de problema, sau cu un algoritm asimetric (RSA).

Sau mai simplu: criptezi toate datele sfisate de server cu o parola, cunoscuta doar de program.

Cel mai eficient ar fi RSA-ul.

Dupa cum urmeaza:

Serverul trimite Public-Key

Clientul genereaza un string random il "cripteaza" cu Pub-Key si it trimite serverului(RSA, asimetric).

Serverul decripteaza pachetul si extrage stringul random (numim parola)(RSA, asimetric).

Serverul trimite un mesaj "Hello Server" criptat cu parola (criptat cu AES, simetric).

Clientul decripteaza Hello Server, il verifica.

Clientul isi trimite parola "123" criptata cu parola rand generata catre server(AES, simetric).

Serverul decripreaza, afla parola "123", Verifica daca parola 123= "123" (parola stiuta).

Daca da, comunicarea server-client se face, toate datele trimise/primite criptate cu AES, parola rand generata.

Primii 4 pasi fac parte din key-exchange.

Restul verificare si autentificare.

Tocmai am facut un proiect pentru un chat "secure" ce foloseste RSA(~2000 biti). Singura problema e ca (m^q) % N nu da acelasi rezultat in PHP si visual basic NET :))

Link to comment
Share on other sites

@bcman Adica ceea ce zici tu este ca cineva care stie sa "miroase" traficul, nu se va prinde ca eu folosesc un alt browser ?:)) Buna ideea oricum.

@yoyois ideea ta e foarte buna dar deja ma complic mai mult decat trebuie.

EDIT: La ceva de genu te referi? Encrypting Communication between C# and PHP - CodeProject

EDIT2: Problema nr 2 a fost rezolvata +1 tex

Aici e codul in caz ca ii e cuiva de folos:

$message = $_GET["text"];
$pieces = explode("t/",$message);
$text = "";
foreach($pieces as $element):
$text = $text.$element."\r\n";
endforeach;

Folosire:

/send.php?text=line1t/line2

Edited by dariusmare
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.



×
×
  • Create New...