dariusmare Posted December 31, 2013 Report Posted December 31, 2013 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=123Este sigura metoda aceasta? I se poate face bypass? Alte metode? Quote
Silviu Posted December 31, 2013 Report Posted December 31, 2013 P?i se poate face bypass, c? po?i spoofa traficul ?i nu ai nicio protec?ie. Se mai discutase pe aici un subiect asem?n?tor, dar nu mai ?in exact minte cum se proceda. Sper s? te ajute b?ie?ii. Quote
aelius Posted December 31, 2013 Report Posted December 31, 2013 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) Quote
Robert1995 Posted December 31, 2013 Report Posted December 31, 2013 Tii minte in sesiune parola si ai o pagina de "login", cand nu ai in sesiune tokenul, trimiti lumea la pagina de login.Sau faci o chestie is_logged in sesiune. Up to you . Quote
dariusmare Posted December 31, 2013 Author Report Posted December 31, 2013 (edited) @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\ntext2COD PHP:$message = $_GET["text"];echo $message;Vreau sa se afiseze:texttext2 Edited December 31, 2013 by dariusmare Quote
GarryOne Posted December 31, 2013 Report Posted December 31, 2013 c? po?i spoofa traficulTraficul 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 .htaccessUn exemplu ar fiorder deny,allowdeny from allallow from 111.222.333.444Unde 111.222.333.444 e ip-ul de pe care sa faci request. Quote
EAdrian Posted December 31, 2013 Report Posted December 31, 2013 ...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... Quote
dariusmare Posted December 31, 2013 Author Report Posted December 31, 2013 @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. Quote
SticKyWoX Posted December 31, 2013 Report Posted December 31, 2013 De ce nu criptezi mai bine ce-ti apare pe pagina? Si decriptezi in program.PS: ^^ Luati in cosiderare ca el vrea sa distribuie programul, deci restrictiile pe IP cad. Quote
GarryOne Posted December 31, 2013 Report Posted December 31, 2013 (edited) 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 December 31, 2013 by GarryOne Quote
dariusmare Posted December 31, 2013 Author Report Posted December 31, 2013 +1 SticKyWoX . Ideea lui e foarte buna. Trebuie doar sa gasesc o metoda de cryptare ce o stie si c#. Cred ca AES e ok.@GarryOne asta stiam si eu ca restrictionarea dupa ip cade, trebuia sa specific de la inceput ca voi distribui aplicatia. Quote
SticKyWoX Posted December 31, 2013 Report Posted December 31, 2013 Daca chiar vrei sa fie sigur, fa-ti propriul mod de criptare. Quote
dariusmare Posted December 31, 2013 Author Report Posted December 31, 2013 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\ntext2COD PHP:$message = $_GET["text"];echo $message;Vreau sa se afiseze:texttext2 Quote
GarryOne Posted December 31, 2013 Report Posted December 31, 2013 @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. Quote
dariusmare Posted December 31, 2013 Author Report Posted December 31, 2013 @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. Quote
EAdrian Posted December 31, 2013 Report Posted December 31, 2013 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.. Quote
yoyois Posted December 31, 2013 Report Posted December 31, 2013 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-KeyClientul 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 Quote
dariusmare Posted December 31, 2013 Author Report Posted December 31, 2013 (edited) Ok, si cum trimit linkul?blabla.com/email.php?fr&text=line1\nline2Codul acesta nu merge, imi trimite email asa: line1\nline2 si eu vreau asa line 1 line 2 Edited December 31, 2013 by dariusmare Quote
aelius Posted December 31, 2013 Report Posted December 31, 2013 dariusmare: foloseste explode, definesti ce separator vrei Quote
bcman Posted December 31, 2013 Report Posted December 31, 2013 Poti ca in programul tau sa setezi un User-Agent personalizat (gen Brower: RST1.0) si sa permiti din aplicatia PHP doar acel User agent. Problema e ca apare user-agentul atunci cand sniffezi traficul cu Wireshark, dar sunt sanse mai mici ca respectivul sa se prinda. Quote
dariusmare Posted December 31, 2013 Author Report Posted December 31, 2013 (edited) @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 - CodeProjectEDIT2: Problema nr 2 a fost rezolvata +1 texAici 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 December 31, 2013 by dariusmare Quote