digimyth Δημοσ. 9 Δεκεμβρίου 2010 Δημοσ. 9 Δεκεμβρίου 2010 Καλημέρα, Θέλω να υλοποιήσω για τη σελίδα μου φιλικά links προς τις μηχανές αναζήτησης αλλά δε μπορώ να βρω τον τρόπο. Θέλω να είναι της μορφής "www.example.com/archives/free-seminars-for-web-development" Ο μόνος τρόπος που σκέφτηκα είναι να αποθηκεύσω στη βάση ένα όνομα για ένα link και την πραγματική του τοποθεσία η οποία δε θα είναι ευρέως γνωστή. Δηλαδή column1: free-seminars-for-web-development column2: /archives/article23.php Οπότε θα είναι της μορφής "www.example.com/index.php?ref=free-seminars-for-web-development" Αυτό που θέλω είναι να μην συμπεριλαμβάνεται το index.php?ref= στο λινκ. Δε χρησιμοποιώ κάποιο CMS (βλ joomla,wordpress και συναφή). Χρησιμοποιώ τα κλασικά PHP, MySQL... Ευχαριστώ
parsifal Δημοσ. 9 Δεκεμβρίου 2010 Δημοσ. 9 Δεκεμβρίου 2010 Αυτό που ζητάς μπορεί να γίνει με URL rewriting. Αν μιλάμε για Apache Server, ξεκινάς από εδώ: http://httpd.apache.org/docs/2.2/rewrite/
digimyth Δημοσ. 9 Δεκεμβρίου 2010 Μέλος Δημοσ. 9 Δεκεμβρίου 2010 Μήπως τυχαίνει κανά παράδειγμα ή περισσότερες πληροφορίες από κάποιον που το έχει κάνει; (γιατί βρίσκω λίγο περίπλοκη τη σελίδα που μου έδωσες) ευχαριστώ
parsifal Δημοσ. 9 Δεκεμβρίου 2010 Δημοσ. 9 Δεκεμβρίου 2010 Έχεις δίκιο, το επίσημο documentation είναι λίγο βαρύ. Υπάρχουν πολλά πιο εύπεπτα tutorials. Δες π.χ. αυτό: http://www.addedbytes.com/for-beginners/url-rewriting-for-beginners/
digimyth Δημοσ. 9 Δεκεμβρίου 2010 Μέλος Δημοσ. 9 Δεκεμβρίου 2010 Ωραία βρήκα αυτό που ήθελα... ευχαριστώ. Αυτή η τεχνική βοηθάει σε πιθανό hacking εφόσον δε φαίνεται η δομή και δε μπορούν να περαστούν παράμετροι έτσι;
parsifal Δημοσ. 9 Δεκεμβρίου 2010 Δημοσ. 9 Δεκεμβρίου 2010 Δεν πιστεύω ιδιαίτερα στη φιλοσοφία του "Security by obscurity". Αν έχεις γράψει σωστό κώδικα, ο server στον οποίον φιλοξενούνται τα sites σου έχει ενημερωμένο λογισμικό και σωστά ρυθμισμένα permissions, δε θα έχεις πρόβλημα. Δεν πα' να ξέρει ο άλλος και το ακριβές URL κάθε ενός resource που χρησιμοποιείται από το site σου...
digimyth Δημοσ. 9 Δεκεμβρίου 2010 Μέλος Δημοσ. 9 Δεκεμβρίου 2010 Δεν πιστεύω ιδιαίτερα στη φιλοσοφία του "Security by obscurity". Αν έχεις γράψει σωστό κώδικα, ο server στον οποίον φιλοξενούνται τα sites σου έχει ενημερωμένο λογισμικό και σωστά ρυθμισμένα permissions, δε θα έχεις πρόβλημα. Δεν πα' να ξέρει ο άλλος και το ακριβές URL κάθε ενός resource που χρησιμοποιείται από το site σου... Κοίτα ναι μεν δε πρέπει και είναι ανόητο να το κάνεις, να στηρίζεσαι για την ασφάλειά σου σε μια μόνο τεχνική. Κάθε πετραδάκι προσθέτει...
jms Δημοσ. 9 Δεκεμβρίου 2010 Δημοσ. 9 Δεκεμβρίου 2010 Δεν πιστεύω ιδιαίτερα στη φιλοσοφία του "Security by obscurity". Αν έχεις γράψει σωστό κώδικα, ο server στον οποίον φιλοξενούνται τα sites σου έχει ενημερωμένο λογισμικό και σωστά ρυθμισμένα permissions, δε θα έχεις πρόβλημα. Δεν πα' να ξέρει ο άλλος και το ακριβές URL κάθε ενός resource που χρησιμοποιείται από το site σου... +++++++++++++++++++++ ποιο λειτουργικό σύστημα είναι πιο ασφαλές? η διανομή ubuntu του GNU/LINUX([open-source]μπορείς να ψάξεις όλον τον κώδικα για τρύπες) ή τα windows 7?
digimyth Δημοσ. 9 Δεκεμβρίου 2010 Μέλος Δημοσ. 9 Δεκεμβρίου 2010 +++++++++++++++++++++ ποιο λειτουργικό σύστημα είναι πιο ασφαλές? η διανομή ubuntu του GNU/LINUX([open-source]μπορείς να ψάξεις όλον τον κώδικα για τρύπες) ή τα windows 7? Δε νομίζω ότι είναι το ίδιο ένα OS με μια ιστοσελίδα... Αν κάποιος χακέψει το λειτουργικό θα το κάνει τοπικά, χωρίς να επηρεάζει άλλους. Αν κάποιος χακέψει μια σελίδα αυτή δε θα είναι διαθέσιμη για ώρες... Συγκρίνεις δυο διαφορετικά πράματα μεταξύ τους
orotoi Δημοσ. 9 Δεκεμβρίου 2010 Δημοσ. 9 Δεκεμβρίου 2010 Τι εννοείς αν είναι να χακέψεις λειτουργικό θα το κάνεις τοπικά? Γίνεται και remote.. αναλόγως το bug που θα κάνεις exploit.. Ένας απο τους πολλούς τρόπους να χακέψεις ενα site είναι και χακεύοντας πρώτα το λειτουργικό του server στο οποίο είναι το site. Και σίγουρα μπορεί να επηρεάσει όλους όσους είναι στον server αυτό. Ενώ αν κάποιος χακέψει ενα site που έχει κακογραμμένο κώδικα και μπορεί να πέσει θύμα sql injection για παράδειγμα, δε θα μπορεί να δεί ή πειράξει άλλα sites που είναι στον ίδιο server απαραίτητα.. Επίσης οι σελίδες δεν χακεύονται.. είναι λάθος σαν έννοια. Αλλά οκ.. καταλαβαίνω τι εννοείς. Αυτό που λέω είναι οτι μπορείς να χακέψεις ενα site αλλα να μην κάνεις deface ας πούμε τις σελίδες του..
dewn735 Δημοσ. 9 Δεκεμβρίου 2010 Δημοσ. 9 Δεκεμβρίου 2010 Δε νομίζω ότι είναι το ίδιο ένα OS με μια ιστοσελίδα... Αν κάποιος χακέψει το λειτουργικό θα το κάνει τοπικά, χωρίς να επηρεάζει άλλους. Αν κάποιος χακέψει μια σελίδα αυτή δε θα είναι διαθέσιμη για ώρες... Συγκρίνεις δυο διαφορετικά πράματα μεταξύ τους Οι σελίδες φιλοξενούνται σε σκληρούς δίσκους υπολογιστών που τρέχουν κάποιο λειτουργικό σύστημα. Αν χακάρουν τη σελίδα σου, κλείνεις το κενό και επαναφέρεις το backup, αν καταφέρουν και κατεβάσουν όλον τον server, θα πέσουν και όλες οι σελίδες που φιλοξενούνται εκεί...
digimyth Δημοσ. 9 Δεκεμβρίου 2010 Μέλος Δημοσ. 9 Δεκεμβρίου 2010 Τι εννοείς αν είναι να χακέψεις λειτουργικό θα το κάνεις τοπικά? Γίνεται και remote.. αναλόγως το bug που θα κάνεις exploit.. Ένας απο τους πολλούς τρόπους να χακέψεις ενα site είναι και χακεύοντας πρώτα το λειτουργικό του server στο οποίο είναι το site. Και σίγουρα μπορεί να επηρεάσει όλους όσους είναι στον server αυτό. Ενώ αν κάποιος χακέψει ενα site που έχει κακογραμμένο κώδικα και μπορεί να πέσει θύμα sql injection για παράδειγμα, δε θα μπορεί να δεί ή πειράξει άλλα sites που είναι στον ίδιο server απαραίτητα.. Επίσης οι σελίδες δεν χακεύονται.. είναι λάθος σαν έννοια. Αλλά οκ.. καταλαβαίνω τι εννοείς. Αυτό που λέω είναι οτι μπορείς να χακέψεις ενα site αλλα να μην κάνεις deface ας πούμε τις σελίδες του.. Νομίζω ότι κάπου χάθηκε το θέμα... Εννοείται ότι χακεύοντας το λειτουργικό ενός σέρβερ μπορείς να ρίξεις όλες τις σελίδες. Δε διαφωνώ με αυτό και πιστεύω επίσης ότι το linux είναι ασφαλέστερο... Εγώ αυτό που συζητούσα είναι για την ασφάλεια της σελίδας από κάποιου είδους επιθέσεις και τεχνικές που μπορούν να το αποτρέψουν όπως το url_rewriting το οποίο μου δίνει τη δυνατότητα να κρύψω το πραγματικό μονοπάτι από έναν επιτιθέμενο. Δε λέω ότι είναι η σωτήρια λύση βέβαια και σαφώς πρέπει να χρησιμοποιηθούν και άλλες τεχνικές. Εκτός από αυτό το πλεονέκτημα δίνει και το επιπλέον πλεονέκτημα ότι ένα πιο κατανοητό μονοπάτι είναι περισσότερο εύκολο να το θυμάται κάποιος και εκτός αυτού είναι καλύτερο και για τις μηχανές αναζήτησης! Το αν κάποιος εισβάλλει στον σέρβερ και τον ρίξει ολόκληρο μαζί με τη σελίδα μου αυτό είναι άλλο θέμα και θέμα του σέρβερ... Επίσης το remote control μπορεί να γίνει, αλλά όπως είπα πριν δεν επηρεάζει άλλους οι οποίοι θέλουν πρόσβαση σε μια υπηρεσία, εκτός και αν γίνει σε έναν σέρβερ. Εγώ εννοούσα απλά έναν υπολογιστή ο οποίος δεν είναι σέρβερ. Όταν λέω hack εννοώ οποιαδήποτε τροποποίηση γίνει στη σελίδα από κάποιον μη εξουσιοδοτημένο. Από εκεί και πέρα ανάλογα με το hack χωρίζεται σε κατηγορίες όπως το deface. Πιστεύω ότι το χρησιμοποίησα σωστά σαν όρο.
orotoi Δημοσ. 10 Δεκεμβρίου 2010 Δημοσ. 10 Δεκεμβρίου 2010 όχι το hack σαν όρος δεν έχει καμία σχέση με την τροποποίηση (deface) μιας σελίδας. Για το url rewrite και το seo κομμάτι συμφωνώ. Επίσης είτε εκτελεί χρέη server είτε οχι ένας υπολογιστής, μπορεί να παραβιαστεί και απομακρυσμένα. Για την ασφάλεια του linux (προφανώς απέναντι σε windows εννοείς) σε γενικές γραμμές συμφωνώ. Αλλα παίζουν πολλοί παράγοντες ρόλο.
digimyth Δημοσ. 11 Δεκεμβρίου 2010 Μέλος Δημοσ. 11 Δεκεμβρίου 2010 Δε μπορώ να βρω με τίποτα πως δουλεύει αυτό το ριμάδι το URL rewrite Υποτίθεται ότι θέλω να αυτό το url www.example.com/index.php?page=intro.php να μου το εμφανίζει ως www.example.com/intro Υποτίθεται επίσης ότι πρέπει να χρησιμοποιήσω κάπως αυτή την εντολή στο .htaccess: > RewriteEngine on RewriteRule ^[A-Za-z-]+/([A-Za-z0-9-]+)/?$ index.php?page=$1 [NC,L] Αλλά δε δουλεύει με τίποτα Στο link στη σελίδα επίσης δε ξέρω πως ακριβώς να το βάλω... Να το βάλω ως: ><a href="index.php?page=intro.php">intro</a> ή ως: ><a href="intro">intro</a> ή μήπως: ><a href="www.example.com/intro">intro</a> Thanks για όποια βοήθεια
merianos Δημοσ. 11 Δεκεμβρίου 2010 Δημοσ. 11 Δεκεμβρίου 2010 Λοιπόν ! Αυτό που ζητάς πάει λίγο ποιο μακριά από το htacces. Για να υλοποιήσεις τα SEF URLs (Search Engine Friendly URL) θα πρέπει πέρα από το htaccess να λερώσεις λίγο τα χέρια σου κώδικα. Ας αρχίσουμε λοιπόν : Το πρωτόκολλο επικοινωνίας HTTP σου επιτρέπει να μεταφέρεις δεδομένα από τη σελίδα προς τον διακομιστή σου με διάφορους τρόπους. Ένας εξ αυτών είναι και τα γνωστά GET requests. Έτσι θα μπορούσες σε πρώτη φάση και για δική σου ευκολία να προετοιμάσεις την εφαρμογή σου να δέχεται ερωτήματα GET requests αντί για POST requests που θα έκαναν την δουλειά σου ποιο δύσκολη. Αυτό πως θα γίνει; Ας δούμε ένα παράδειγμα : Ας υποθέσουμε πως έχεις μια σελίδα που θα αναλαμβάνει την προβολή όλως των archive σου. Αυτή τη σελίδα υποθετικά πάντα την ονομάζουμε archives.php. Για να την προετοιμάσεις τώρα να είναι έτοιμη για να δεχτεί GET requests κάνε το ακόλουθο : > <?php $archive_sef_url = $_GET['ARCHIVE_SEF_URL']; ?> <html> <head> ....... </head> <body> ....... <?php echo $ARCHIVE_CONTENT; ?> ....... </body> </html> Αν παρατηρήσεις τον κώδικα μου πριν το tag html μεταφέρω τα δεδομένα από την Global Variable GET στην μεταβλητή $archive_sef_url. Κατά αυτό τον τρόπο θα πρέπει να προετοιμάσεις και εσύ τη σελίδα σου για να δέχεται GET Requests. Για να ξέρεις πως θα πρέπει να προετοιμάσεις τη σελίδα σου έτσι ώστε να μπορεί να δεχτεί τις μεταβλητές GET, θα πρέπει να αποφασίσεις ποιες θα είναι οι μεταβλητές που θα μεταφέρονται από το URL. Βάση του παραδείγματος που έδωσες παραπάνω (www.example.com/archives/free-seminars-for-web-development) οι μεταβλητές θα μπορούσαν να είναι οι ακόλουθες: archives free-seminars-for-web-development στην πρώτη μεταβλητή θα μπορούσες επίσης να παίξεις και με άλλα πράγματα όπως για παράδειγμα pages, news, galleries που η κάθε μεταβλητή θα μπορούσε με τη σειρά την να αναφέρετε σε ένα αρχείο php στο server. Δηλαδή να έχεις το pages.php, news.php, galleries,php κ.ο.κ. ενώ στη δεύτερη μεταβλητή θα μπορούσες να έχεις το URL key για το κάθε άρθρο σου ξεχωριστά. Σε αυτό το σημείο ας δούμε το archives που καθώς φαίνεται θα πρέπει να του μεταβιβάσουμε μόνο το URL key, οπότε για να ολοκληρώσουμε το παράδειγμα μας ας κάνουμε το archives.php να μπορεί να δεχτεί το URL key και να πράξει ανάλογα. > <?php $archive_sef_url = $_GET['asu']; ?> <html> <head> ....... </head> <body> ....... <?php echo $ARCHIVE_CONTENT; ?> ....... </body> </html> Σε αυτό το σημείο το archives.php μπορεί να δεχτεί GET Requests μέσω του url στη μορφή http://www.mysite.ex...web-development Τώρα που το archives.php μπορεί να πάρει τις παραμέτρους που χρειάζεται τι άλλο πρέπει να κάνεις εσύ από τον κώδικα σου; Θα πρέπει να υποχρεώσεις όλα τα link στη σελίδα σου να γράφονται στη μορφή που θέλεις. Δηλαδή, στο βρόγχο που εκτελείς για να εκτυπώσεις όλα σου τα archives θα πρέπει να του πεις να τραβήξει το URL key και να το βάλει στο νέο URL. Για παράδειγμα αν μέχρι τώρα έκανες αυτό : > while($row = mysql_fetch_array($result, MYSQL_ASSOC)) { echo '<a href="http://www.mysite.ext/archives.php?id=$results[\'ID\']">$result[\'Article_Title\']</a><br />'; echo $result['sort_description']; echo '<br />'; } Θα πρέπει να το αλλάξεις και να το κάνεις έτσι : > while($row = mysql_fetch_array($result, MYSQL_ASSOC)) { echo '<a href="http://www.mysite.ext/archives/$results[\'URL_KEY\']">$result[\'Article_Title\']</a><br />'; echo $result['sort_description']; echo '<br />'; } Τέλος αφού έχεις κάνει όλα τα παραπάνω θα πρέπει να κάνεις rewrite το url σου από www.example.com/archives/free-seminars-for-web-development σε http://www.mysite.ex...web-development έτσι ώστε ο Apache να ξέρει τελικά ποιο αρχείο θα ψάξει να βρει. Μέσα στο .htaccess σου θα πρέπει να κάνεις το ακόλουθο : Αρχικά, επηδή μπορεί ο server σου να μην έχει ενεργοποιημένο το module mod_rewrite θα πρέπει να του αναφέρεις ρητά την ενεργοποίηση του module με τον κώδικα που ακολουθεί : >RewriteEngine on στη συνέχεια θα πρέπει να του εξηγήσεις ποιο pattern θα πρέπει να ακολουθήσει για να κάνει το rewrite. αυτό πως γίνετε; Πάμε να το δούμε. Στο htaccess θα πρέπει να χρησιμοποιήσεις την εντολή RewriteRule που δέχεται δυο βασικές παραμέτρους. Η πρώτη παράμετρος είναι το URL που πληκτρολόγησε ο χρήστης στο address bar του περιηγητή του και το δεύτερο είναι το URL στο οποίο θέλουμε να τον στήλουμε εμείς στην πραγματικότητα. Η σύνταξη του RewriteRule είναι κάπως έτσι : >RewriteRule ^old_page.php$ new_page.php [R] Πάμε τώρα να δούμε και πως θα γράψουμε τον κανόνα μας για τη σελίδα μας : >RewriteRule ^archives/([a-zA-Z0-9\-]*)$ archives.php?asu=$1 [R] Οπότε τώρα το htaccess σου θα πρέπει να μοιάζει κάπως έτσι > RewriteEngine on RewriteRule ^archives/([a-zA-Z0-9\-]*)$ archives.php?asu=$1 [R] Τι κάνει ο κώδικα όμως που μόλις έγραψα; Η πρώτη παράμετρος αρχικά χρησιμοποιεί RegularExpressions. Το RegularExpression είναι αυτό: ^archives/([a-zA-Z0-9\-]*)$ Ας το αναλύσουμε σιγά σιγά για να δούμε τι κάνει : ^archives - Ψάχνει να βρει Requests που αρχίζουν με τη λέξη archives ([a-zA-Z0-9\-]*)$ - Ψάχνει να εντοπίσει συνδυασμό πεζών και κεφαλαίων χαρακτήρων, αριθμούς και παύλες σε κάθε πιθανό συνδυασμό με τους οποίους τερματίζετε το ερώτημα. Αν εντοπίσει αυτό το συνδυασμό τότε αποθηκεύει όλο το συνδυασμό που εντόπισε στη μεταβλητή $1. Στη συνέχεια, και αν το regular expression της πρώτης παραμέτρου έχει εντοπίσει ένα URL που ταιριάζει με τις επιλογές μας τότε περνάει τη μεταβλητή στο κανονικό URL που τελικά το αναγνωρίζει και ο Apache. Να σημειωθεί πως ο παραπάνω κώδικας για το rewrite δεν θα παίξει με ελληνικούς χαρακτήρες. Δηλαδή δεν θα παίξει με το url http://www.mysite.ex...ives/τα-νέα-μας Για να έχεις και ελληνικούς χαρακτήρες στο url θα μπορέσεις να κάνεις κάτι σαν αυτό που ακολουθεί, αλλά δεν είμαι 100% αν θα παίζει με τον Apache > RewriteEngine on RewriteRule ^archives/([a-zA-Z0-9\-α-ωΑ-ΩάέήίόύώΆΈΉΊΌΎΏ]*)$ archives.php?asu=$1 [R] Υ.Γ. : Βέβαια τα παραπάνω στις ημέρες εξυπηρετούν μόνο για εκπαιδευτικούς σκοπούς μιας και υπάρχει μια πληθώρα δωρεάν εργαλείων που κατά πάσα πιθανότητα μπορούν να κάνουν αυτό που θέλεις, όπως το θέλεις ή με μικρές αλλαγές, όπως είναι για παράδειγμα τα εργαλεία Wodrdpress, Joomla ή Drupal. Αν πάλι νομίζεις πως κανένα από τα εργαλεία που σου έδωσα δεν κάνει τη δουλειά σου μπορείς να χρησιμοποιήσεις PHP Frameworks όπως είναι το CakePHP, Zend Framework, και άλλα πολλά. Αν θέλεις μπες και δες βασικά πράγματα για το CakePHP
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα