Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]=>[JavaScript]Google translate tu nie zadziała ...
Forum PHP.pl > Forum > Przedszkole
phpamator
Hejka,
To znowu ja, wasz upierdliwy amator.
Dość długo nic nie pisałem, nadszedł jednak ten .... dzień że muszę zapytać. Kopałem trochę po sieci ale nie bardzo wykopałem co chciałem.
potrzebuję zrobić coś po stronie klienta w js i z czym nie do końca mogę sobie poradzić za to po stronie servera poradziłem sobie bez problemu.
  1. // funkcja w php
  2.  
  3. private function getImgproxy($link,$width,$height,$pafka){
  4. // key & salt
  5. $key = 'mój klucz kodowania';
  6. $salt = 'mój salt';
  7. $vpsLink = base64_encode('https://imgprocessor.com/');
  8. // key compression
  9. $keyBin = pack("H*" , $key);
  10. if(empty($keyBin)) {
  11. die('Key expected to be hex-encoded string');
  12. }
  13.  
  14. // key compression
  15. $saltBin = pack("H*" , $salt);
  16. if(empty($saltBin)) {
  17. die('Salt expected to be hex-encoded string');
  18. }
  19.  
  20. $resize = 'fit';
  21. $gravity = 'no';
  22. $enlarge = 0;
  23. $extension = 'png';
  24. $url = $link;
  25.  
  26. // processing
  27. $encodedUrl = rtrim(strtr(base64_encode($url), '+/', '-_'), '=');
  28. $path = sprintf("/%s/%d/%d/%s/%d/%s.%s", $resize, $width, $height, $gravity, $enlarge, $encodedUrl, $extension);
  29. $signature = rtrim(strtr(base64_encode(hash_hmac('sha256', $saltBin.$path, $keyBin, true)), '+/', '-_'), '=');
  30. $go = $signature.$path;
  31.  
  32. return base64_decode($vpsLink).$go;
  33. }

teraz chciałem to samo zrobić po stronie klienta w związku z czym zrobiłem:
  1. function imgProxy (data) {
  2. var key = 'mój klucz kodowania';
  3. var salt = 'mój salt';
  4. var vpsLink = encodedString('https://imgprocessor.com/');
  5. // nie wiem jak się zabrać za to poniżej ...
  6. var keyBin = ... pack("H*" , klucz);...
  7. if(!!keyBin) {console.log('Key expected to be hex-encoded string');}
  8. var saltBin = ... pack("H*" , salt);...
  9. if(!!saltBin) {console.log('Salt expected to be hex-encoded string');}
  10.  
  11. for (i = 0; i < data.response.product_data.length; i++) {
  12. var resize = 'fit';
  13. var gravity = 'no';
  14. var enlarge = 0;
  15. var extension = 'png';
  16. var url = $link;
  17. var product = data.response.product_data[i];
  18. product['image'] = null;
  19. console.log(product['image']);
  20. // i tu będzie reszta czyli zbudowany url - też jeszcze nie wiem do końca ale pracuję nad tym - gdyby ktoś mi podpowiedział jak dokonać "pack'a" ?
  21. }
  22. }
viking
Zacznij od tego że publiczne udostępnienie soli i klucza w js to głupota.
phpamator
Prawda Vikingu, to kolejna rzecz do zrobienia. Zdaję sobie sprawę z tego smile.gif
będzie to rozwiązane ... jakoś ... ajax
nospor
a jak ajax niby to rozwiaze? Ze niby ajax ci zwroci ten sol i klucz? Toz to nadal bedzie publiczne wowczas.
phpamator
Co sugerujesz nospor, jakie rozwiązanie ?
Co mogę z tym zrobić żeby klucz i salt nie były publiczne ?
nospor
skoro zamierzales slac ajax tak czy siak, to czemu nie mozesz slac tego ajax i w php jak czlowiek tego zrobic a ajax zwroci ci rezult tylko tego wszystkiego?
phpamator
spróbuję ale obawiam się, że spowoduje to spore opóźnienia ....
chociaż może nie będzie aż tak tragicznie, w każdym razie chciałem to zrobić po stronie klienta, nawet gdybym miał usunąć dodatkowe szyfrowanie czegokolwiek
ale wróćmy do początku bo mimo wszystko chciałbym wiedzieć jak to zrobić niezależnie czy to głupie czy nie i czy bezpieczne czy nie.
Chodzi mi bardziej o to jak to zrobić niż z tego korzystać a potem ewentualnie rozwiązywać inne problemy w tym bezpieczeństwa.



_______________________________________________________________________________

Na marginesie dodam, że spotkałem takich kilka "profesjonalnych" skyptów w których klucze dostępu
"specjaliści" umieścili jako zmienne w skrypcie i każdy mógł sobie użyć do wyszukiwarki adresów pocztowych smile.gif
Tak więc amatorowi ... wybaczcie smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.