Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wrzucanie filmów yt przez formularz - zabezpieczenie
Forum PHP.pl > Forum > Przedszkole
stefan33
Witam
Chcę na swojej stronie umieścic opcje dodawania filmików z yt. Jakoś specjalnie się nad tym nie zastanawiałem, wymyslilem z kopa krótki kod i chcialbym sie tylko upewnić czy jest on bezpieczny, ew. czy istnieje jakiś lepszy sposób. Z góry dziekuje za wszystkie odpowiedzi

kod:
  1. $link=$_POST['yt_link'];
  2.  
  3. //przywrocenie & po htmlentities
  4. $link=str_replace("&","&",$link);
  5.  
  6. //wyszukanie wystapienia youtube
  7. if(preg_match_all("/.*youtube/",$link,$match)!= false)
  8. {
  9. $found=$match[0][0];//ciąg typu http://www.youtube
  10. $linkLen=strlen($link);
  11. $correct=0;
  12.  
  13. $i=strlen($found);
  14. while($i<$linkLen) //wyszukanie .com, .pl itd.
  15. {
  16. if($link[$i]=="/")
  17. {
  18. $correct=1;
  19. break;
  20. }
  21. else $i++;
  22. }
  23.  
  24. if($correct==0)
  25. {
  26. echo "nieporawny";
  27. }
  28. else
  29. {
  30. $verifiedLink="http://youtube.com".substr($link,$i,$linkLen); //podmiana calego ciagu zakonczonego na np. youtube.com na http://youtube.com
  31. }
  32. }
  33. else echo "niepoprawny";

W ten sposob oczywiscie ktos moze wrzucic niepoprawny link, ale nie bedzie on niebezpieczny, w tym kodzie generalnie chodzi o to, zeby bezwzgledny link wskazywal na youtube. Tak wiec prosze o ew. potwierdzenie czy to jest poprawnie oraz sugestie polepszenia(w kwestii bezpieczenstwa). Z góry dziekuje za wszystkie odpowiedzi
markonix
Co to jest niebezpieczny link?
Czy niebezpiecznym linkiem jest link do innej strony?

Co do walidacji linka nie prościej jest sprawdzić czy pierwsze 20 znaków stringa to "http://youtube.com/" ?
Nie da się się tu nic oszukać (porobić jakiś sudomeny czy inne pseudolinki) bo sprawdzasz od protokołu do domeny.


edit: ewentualnie link www bo youtube robi przekierowanie bez "www" na "z www".
stefan33
Cytat(markonix @ 20.10.2012, 17:42:39 ) *
Co to jest niebezpieczny link?
Czy niebezpiecznym linkiem jest link do innej strony?

Co do walidacji linka nie prościej jest sprawdzić czy pierwsze 20 znaków stringa to "http://youtube.com/" ?
Nie da się się tu nic oszukać (porobić jakiś sudomeny czy inne pseudolinki) bo sprawdzasz od protokołu do domeny.


edit: ewentualnie link www bo youtube robi przekierowanie bez "www" na "z www".

Link do innej strony niz yt jest co najmniej niepożądany, a niebezpieczny też moze byc tongue.gif
Taka walidacja to nie bardzo, bo odrzucaloby poprawne linki np. bez "http://" tez jest poprawny, podobnie z domena np. ".pl" jest poprawny, wiec teoretycznie jest to prostsze, ale z kolei bardzo nieprzyjazne dla uzytkownikow
Adrian1207
Możesz próbować wyciągać z podanego url'a samo id video, czyli to co wygląda np. tak: aMpSuYOSiWg (po watch?v= )i wstawiać to na stronie doklejając przy wyświetlaniu http://youtube.com/watch?v=$id. Oczywiście linki mogą zawierać dodatkowo jakieś &feature=related czy coś, więc dobrze to sobie wydrzyj. Chyba nie do ominięcia. smile.gif

Ale to na pewno tylko jeden z wielu sposobów.
stefan33
Cytat(Adrian1207 @ 20.10.2012, 19:58:31 ) *
Możesz próbować wyciągać z podanego url'a samo id video, czyli to co wygląda np. tak: aMpSuYOSiWg (po watch?v= )i wstawiać to na stronie doklejając przy wyświetlaniu http://youtube.com/watch?v=$id. Oczywiście linki mogą zawierać dodatkowo jakieś &feature=related czy coś, więc dobrze to sobie wydrzyj. Chyba nie do ominięcia. smile.gif

Ale to na pewno tylko jeden z wielu sposobów.

Do iframe'a musi być link typu youtube.com/embed/id, więc w zasadzie to dobry pomysł żeby wyciągać id ponieważ wtedy moge tworzyć poprawne linki do iframe'a, tak wiec dzieki za odp smile.gif
IProSoft
A tru masz przyjemny regex dla wyciągania ID:
  1. "http(?:s)?://(?:video\.google\.(?:com|com\.au|co\.uk|de|es|fr|it|nl|pl|ca|cn)/(?:[^"]*?))?(?:(?:www|au|br|ca|es|fr|de|hk|ie|in|il|it|jp|kr|mx|nl|nz|pl|ru|tw|uk)\.)?youtube\.com(?:[^"]*?)?(?:&|&amp;|/|\?|;|\%3F|\%2F)(?:video_id=|v(?:/|=|\%3D|\%2F))([0-9a-z-_]{11})"
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.