Απαγόρευση hotlinking εικόνων

Από που να ξεκινήσω; Που θα βρω; κ.α. γενικές ερωτήσεις για την δημιουργία μιας ιστοσελίδας.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
EneMe
Super Moderator
Δημοσιεύσεις: 13307
Εγγραφή: 09 Ιούλ 2002 13:29
Τοποθεσία: Στο κέντρο της Ελλάδας!
Επικοινωνία:

Απαγόρευση hotlinking εικόνων

Δημοσίευση από EneMe » 06 Ιούλ 2010 22:09

(Το βάζω εδώ γιατί δεν ξέρω πως υλοποιείται, ας το μετακινήσει όποιος mod γνωρίζει)

Στο θέμα:

Θέλω να απαγορεύσω το hotlinking για τις εικόνες μου και στην θέση της εικόνας που μου τραβάνε να βγαίνει μία άλλη (από τον server μου).

Επίσης, αν είναι εύκολο, αυτό να γίνεται για κάποια sites, όχι για όλα. (πχ να γίνεται για όλα τα *.blogspot.com και για το www.paradeigma.gr)

Πώς υλοποιείται αυτό; (υπάρχει cpanel, αν βοηθάει κάπου)

Yγ: Διάβασα κάποια παλιά θέματα για htaccess, αλλά δεν πολυκατάλαβα.

nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

Απαγόρευση hotlinking εικόνων

Δημοσίευση από nbc » 06 Ιούλ 2010 23:30

Όντως, γίνεται .htaccess και mod_rewrite:

Κώδικας: Επιλογή όλων

RewriteEngine on

RewriteCond %{HTTP_REFERER}    ^.+\.blogspot.com/.*$ [OR]
RewriteCond %{HTTP_REFERER}    ^.+\.paradeigma.gr/.*$ 
RewriteRule \.(gif|png|jpe?g)$ images/donothotlink.jpg [L]


Άβαταρ μέλους
EneMe
Super Moderator
Δημοσιεύσεις: 13307
Εγγραφή: 09 Ιούλ 2002 13:29
Τοποθεσία: Στο κέντρο της Ελλάδας!
Επικοινωνία:

Απαγόρευση hotlinking εικόνων

Δημοσίευση από EneMe » 07 Ιούλ 2010 03:07

Ευχαριστώ!!!

Έριξα μια ματιά και γύρισα με απορίες, μην κάνω χαζομάρα...

Κώδικας: Επιλογή όλων

RewriteEngine on

RewriteCond %{HTTP_REFERER}    ^.+\.blogspot.com/.*$ [OR]
RewriteCond %{HTTP_REFERER}    ^.+\.paradeigma.gr/.*$ 
RewriteRule \.(gif|png|jpe?g)$ images/donothotlink.jpg [L]
Θέλω να απαγορεύσω ΜΟΝΟ σε αυτά τα sites, ok? Όχι να επιτρέπω μόνο σε αυτά.
Το ξαναρωτάω, επειδή καλώ εικόνες με πλήρες url και από το ίδιο το site μου (όχι να μην μπορώ να αυτο-hotlinkιαστώ! :P

Είδα κάτι για [NC] κι αν κατάλαβα καλά έχει σχέση με το αν είναι case sensitive τα urls. Χρειάζεται αυτό;

Eπίσης για το RewriteRule, τί είναι το [L]? Σε παράδειγμα είδα και [R]...

sibas
Honorary Member
Δημοσιεύσεις: 1853
Εγγραφή: 21 Φεβ 2003 01:21
Τοποθεσία: Μια εδώ.. Μια εκεί.. Σήμερα είμαι εδώ!!!
Επικοινωνία:

Απαγόρευση hotlinking εικόνων

Δημοσίευση από sibas » 07 Ιούλ 2010 07:16

ότι θέλεις να μάθεις βρίσκετε εδώ http://forum.modrewrite.com/


nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

Απαγόρευση hotlinking εικόνων

Δημοσίευση από nbc » 07 Ιούλ 2010 10:42

EneMe έγραψε:...Θέλω να απαγορεύσω ΜΟΝΟ σε αυτά τα sites, ok? Όχι να επιτρέπω μόνο σε αυτά..
Ναι, πασά μου, κατάλαβα τι ζητάς :D

Εξάλλου τι φοβάσαι... Αυτό μπαινοβγαίνει και αλλάζει όποτε θέλεις. Δεν προκαλεί μόνιμη και ανήκεστον βλάβη! Τη στιγμή που θα το βγάλεις, όλα ξαναγυρνούν όπως ήταν. Δεν εμπλέκεται cache καθώς δεν κάνω redirect. Μπαίνεις από το paradeigma ή κάποιο blogspot και βλέπεις τι παίρνεις. Μπαίνεις από αλλού (πχ FS) και συγκρίνεις. Να σου κάνω και ένα mini tutorial για να κατανοήσεις τη λειτουργία του...

Η δουλειά γίνεται από τη

RewriteRule \.(gif|png|jpe?g)$ images/donothotlink.jpg

Παίρνει 3 παραμέτρους που χωρίζονται με whitespace:
  • Εισερχόμενο path (regex)

    Βάλαμε όλα τα paths που λήγουν σε gif, png, jpg, jpeg. Προσθέτεις, αν έχεις και άλλα.
  • Εξερχόμενο path

    To relative path της εικόνας που θέλεις να επιστρέφει. Αν είναι το ίδιο, βάζεις - (hyphen)
  • Flags (προαιρετικά)

    To [L] σημαίνει ότι είναι το τελευταίο rule για το συγκεκριμένο set. Μπορείς να το βγάλεις αν δεν έχεις τίποτε άλλο πιο κάτω στο .htaccess σου. Εγώ δεν ξέρω τι άλλο έχεις γι αυτό και το έβαλα. Το [R] στέλνει 302 Redirect headers. Αν θες το βάζεις, αλλά δεν χρειάζεται. Το [F] στέλνει 403 Forbiden headers. Αυτό είναι χρήσιμο αν ΔΕΝ θέλεις να γυρνάς άλλη εικόνα.

    Σε περίπτωση που επιθυμείς περισσότερα του ενός flags, τα χωρίζεις με κόμμα.
Αν και η δουλειά γίνεται με το RewriteRule όπως έγραψα, υπάρχει ένα προβληματάκι. Σε αυτήν την εντολή η πρώτη παράμετρος (που είναι συνθήκη) αφορά μόνο paths. Δηλαδή

h**p://www.domain.com/path?query#fragment

Αν εσύ επιθυμείς οποιοδήποτε rewrite με βάση κάποια άλλη συνθήκη, είτε που αφορά το url είτε κάποιον header, τότε θα πρέπει να κάνεις χρήση πρόσθετων RewriteCond. Κάθε RewriteCond αφορά μία συνθήκη. Μπορείς να έχεις όσα RewriteCond επιθυμείς για ένα δεδομένο σετ από RewriteRule (λέω σετ γιατί μπορεί να είναι περισσότερα του ενός).

Εμείς επιθυμούμε να κάνουμε κάτι όχι μόνο με βάση το path (το οποίο ελέγχουμε στη RewriteRule) αλλά και με βάση το referer header. Άρα πρέπει να χρησιμοποιήσουμε και RewriteCond. Και μάλιστα, αφού θέλουμε δύο διακριτές περιπτώσεις, γράφουμε 2 RewriteCond και τις ενώνουμε με [OR]. Αν δεν βάλουμε [OR] τότε εννοείται (by default) το [AND], το οποίο δεν μας κάνει.

RewriteCond %{HTTP_REFERER} ^.+\.blogspot.com/.*$ [OR]

Παίρνει 3 παραμέτρους που χωρίζονται με whitespace:
  • Test String

    Παίρνει διάφορα, εμείς θέλουμε το συγκεκριμένο.
  • Συνθήκη (regex)

    Ότι μου ζήτησες, *.blogspot.com
  • Flags (προαιρετικά)

    Παίρνει διάφορα flags, διαφορετικά από τη RewriteRule, αλλά με την ίδια σύνταξη. Στην πρώτη έβαλα OR στη δεύτερη τίποτα.

Το NC είναι κοινό flag και σημαίνει NoCase. Φυσικά μπορείς να το βάλεις, και στη Rule και στις Cond, όπου κρίνεις σκόπιμο. Δεν αλλάζει κάτι στη λειτουργία, απλά το matching γίνεται case insensitive.

Άβαταρ μέλους
EneMe
Super Moderator
Δημοσιεύσεις: 13307
Εγγραφή: 09 Ιούλ 2002 13:29
Τοποθεσία: Στο κέντρο της Ελλάδας!
Επικοινωνία:

Απαγόρευση hotlinking εικόνων

Δημοσίευση από EneMe » 08 Ιούλ 2010 18:33

Επανήλθα!!!

Δείτε αυτό:

Κώδικας: Επιλογή όλων

RewriteCond %{HTTP_REFERER}    ^.+\.blogspot.com/.*$
RewriteRule \.(gif|png|jpg|jpeg|pdf)$ clopyright.jpg [L] 
Είναι σωστό, δεδομένου ότι υπάρχουν κι άλλα rules στο υπάρχον .htaccess ???

Το RewriteEngine on υπάρχει παραπάνω στο αρχείο και η τελευταία ομάδα με rules τελειώνει με [L].

Τέλος, πώς θα μετατρέψω το RewriteCond για να αποκλείται ένα και μόνο blogspot? (ας πούμε το testblog.blogspot.com)

Αυτό πείτε μου και τελείωσα (πιστεύω)! :oops: :oops: :oops:

edit: Το άλλαξα έτσι:

Κώδικας: Επιλογή όλων

RewriteCond %{HTTP_REFERER}    ^http://testblog\.blogspot\.com/.*$ [OR]
RewriteCond %{HTTP_REFERER}    ^http://www\.testblog\.blogspot\.com/.*$ 
RewriteRule \.(gif|png|jpe?g|bmp)$ clopyright.jpg [L]

Είναι σωστό???

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

Απαγόρευση hotlinking εικόνων

Δημοσίευση από alou » 09 Ιούλ 2010 17:23

Ήδη το έχετε προχωρήσει αρκετά οπότε για την ιστορία και μόνο θα πώ ότι το cpanel που είδα ότι υπάρχει, έχει hot link protection που κάνει ακριβώς αυτό το πράγμα. Το κάνεις enable και αν θες προσθέτεις κάποια domain που θα εξαιρούνται.

Και έχει τη δυνατότητα url redirect, οπότε βάζεις μια φωτο που θες.

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27626
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

Απαγόρευση hotlinking εικόνων

Δημοσίευση από cordis » 13 Ιούλ 2010 15:11

Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Απάντηση

Επιστροφή στο “Γενικές ερωτήσεις κατασκευής ιστοσελίδων”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες