Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλημέρα,

 

Θέλω να υλοποιήσω για τη σελίδα μου φιλικά 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...

 

Ευχαριστώ

  • Απαντ. 31
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Συχνή συμμετοχή στο θέμα

Δημοσ.

Μήπως τυχαίνει κανά παράδειγμα ή περισσότερες πληροφορίες από κάποιον που το έχει κάνει; (γιατί βρίσκω λίγο περίπλοκη τη σελίδα που μου έδωσες)

 

ευχαριστώ

Δημοσ.

Ωραία :D βρήκα αυτό που ήθελα... ευχαριστώ.

Αυτή η τεχνική βοηθάει σε πιθανό hacking εφόσον δε φαίνεται η δομή και δε μπορούν να περαστούν παράμετροι έτσι;

Δημοσ.

Δεν πιστεύω ιδιαίτερα στη φιλοσοφία του "Security by obscurity". Αν έχεις γράψει σωστό κώδικα, ο server στον οποίον φιλοξενούνται τα sites σου έχει ενημερωμένο λογισμικό και σωστά ρυθμισμένα permissions, δε θα έχεις πρόβλημα. Δεν πα' να ξέρει ο άλλος και το ακριβές URL κάθε ενός resource που χρησιμοποιείται από το site σου...

Δημοσ.

Δεν πιστεύω ιδιαίτερα στη φιλοσοφία του "Security by obscurity". Αν έχεις γράψει σωστό κώδικα, ο server στον οποίον φιλοξενούνται τα sites σου έχει ενημερωμένο λογισμικό και σωστά ρυθμισμένα permissions, δε θα έχεις πρόβλημα. Δεν πα' να ξέρει ο άλλος και το ακριβές URL κάθε ενός resource που χρησιμοποιείται από το site σου...

Κοίτα ναι μεν δε πρέπει και είναι ανόητο να το κάνεις, να στηρίζεσαι για την ασφάλειά σου σε μια μόνο τεχνική. Κάθε πετραδάκι προσθέτει... ;)

Δημοσ.

Δεν πιστεύω ιδιαίτερα στη φιλοσοφία του "Security by obscurity". Αν έχεις γράψει σωστό κώδικα, ο server στον οποίον φιλοξενούνται τα sites σου έχει ενημερωμένο λογισμικό και σωστά ρυθμισμένα permissions, δε θα έχεις πρόβλημα. Δεν πα' να ξέρει ο άλλος και το ακριβές URL κάθε ενός resource που χρησιμοποιείται από το site σου...

+++++++++++++++++++++

 

ποιο λειτουργικό σύστημα είναι πιο ασφαλές? η διανομή ubuntu του GNU/LINUX([open-source]μπορείς να ψάξεις όλον τον κώδικα για τρύπες) ή τα windows 7?

Δημοσ.

+++++++++++++++++++++

 

ποιο λειτουργικό σύστημα είναι πιο ασφαλές? η διανομή ubuntu του GNU/LINUX([open-source]μπορείς να ψάξεις όλον τον κώδικα για τρύπες) ή τα windows 7?

Δε νομίζω ότι είναι το ίδιο ένα OS με μια ιστοσελίδα... Αν κάποιος χακέψει το λειτουργικό θα το κάνει τοπικά, χωρίς να επηρεάζει άλλους. Αν κάποιος χακέψει μια σελίδα αυτή δε θα είναι διαθέσιμη για ώρες... :huh:

Συγκρίνεις δυο διαφορετικά πράματα μεταξύ τους

Δημοσ.

Τι εννοείς αν είναι να χακέψεις λειτουργικό θα το κάνεις τοπικά? Γίνεται και remote.. αναλόγως το bug που θα κάνεις exploit..

 

Ένας απο τους πολλούς τρόπους να χακέψεις ενα site είναι και χακεύοντας πρώτα το λειτουργικό του server στο οποίο είναι το site. Και σίγουρα μπορεί να επηρεάσει όλους όσους είναι στον server αυτό. Ενώ αν κάποιος χακέψει ενα site που έχει κακογραμμένο κώδικα και μπορεί να πέσει θύμα sql injection για παράδειγμα, δε θα μπορεί να δεί ή πειράξει άλλα sites που είναι στον ίδιο server απαραίτητα..

 

Επίσης οι σελίδες δεν χακεύονται.. είναι λάθος σαν έννοια. Αλλά οκ.. καταλαβαίνω τι εννοείς. Αυτό που λέω είναι οτι μπορείς να χακέψεις ενα site αλλα να μην κάνεις deface ας πούμε τις σελίδες του..

Δημοσ.

Δε νομίζω ότι είναι το ίδιο ένα OS με μια ιστοσελίδα... Αν κάποιος χακέψει το λειτουργικό θα το κάνει τοπικά, χωρίς να επηρεάζει άλλους. Αν κάποιος χακέψει μια σελίδα αυτή δε θα είναι διαθέσιμη για ώρες... :huh:

Συγκρίνεις δυο διαφορετικά πράματα μεταξύ τους

Οι σελίδες φιλοξενούνται σε σκληρούς δίσκους υπολογιστών που τρέχουν κάποιο λειτουργικό σύστημα. Αν χακάρουν τη σελίδα σου, κλείνεις το κενό και επαναφέρεις το backup, αν καταφέρουν και κατεβάσουν όλον τον server, θα πέσουν και όλες οι σελίδες που φιλοξενούνται εκεί...

Δημοσ.

Τι εννοείς αν είναι να χακέψεις λειτουργικό θα το κάνεις τοπικά? Γίνεται και remote.. αναλόγως το bug που θα κάνεις exploit..

 

Ένας απο τους πολλούς τρόπους να χακέψεις ενα site είναι και χακεύοντας πρώτα το λειτουργικό του server στο οποίο είναι το site. Και σίγουρα μπορεί να επηρεάσει όλους όσους είναι στον server αυτό. Ενώ αν κάποιος χακέψει ενα site που έχει κακογραμμένο κώδικα και μπορεί να πέσει θύμα sql injection για παράδειγμα, δε θα μπορεί να δεί ή πειράξει άλλα sites που είναι στον ίδιο server απαραίτητα..

 

Επίσης οι σελίδες δεν χακεύονται.. είναι λάθος σαν έννοια. Αλλά οκ.. καταλαβαίνω τι εννοείς. Αυτό που λέω είναι οτι μπορείς να χακέψεις ενα site αλλα να μην κάνεις deface ας πούμε τις σελίδες του..

Νομίζω ότι κάπου χάθηκε το θέμα... :blink:

Εννοείται ότι χακεύοντας το λειτουργικό ενός σέρβερ μπορείς να ρίξεις όλες τις σελίδες. Δε διαφωνώ με αυτό και πιστεύω επίσης ότι το linux είναι ασφαλέστερο...

Εγώ αυτό που συζητούσα είναι για την ασφάλεια της σελίδας από κάποιου είδους επιθέσεις και τεχνικές που μπορούν να το αποτρέψουν όπως το url_rewriting το οποίο μου δίνει τη δυνατότητα να κρύψω το πραγματικό μονοπάτι από έναν επιτιθέμενο. Δε λέω ότι είναι η σωτήρια λύση βέβαια και σαφώς πρέπει να χρησιμοποιηθούν και άλλες τεχνικές. Εκτός από αυτό το πλεονέκτημα δίνει και το επιπλέον πλεονέκτημα ότι ένα πιο κατανοητό μονοπάτι είναι περισσότερο εύκολο να το θυμάται κάποιος και εκτός αυτού είναι καλύτερο και για τις μηχανές αναζήτησης!

Το αν κάποιος εισβάλλει στον σέρβερ και τον ρίξει ολόκληρο μαζί με τη σελίδα μου αυτό είναι άλλο θέμα και θέμα του σέρβερ...

 

Επίσης το remote control μπορεί να γίνει, αλλά όπως είπα πριν δεν επηρεάζει άλλους οι οποίοι θέλουν πρόσβαση σε μια υπηρεσία, εκτός και αν γίνει σε έναν σέρβερ. Εγώ εννοούσα απλά έναν υπολογιστή ο οποίος δεν είναι σέρβερ.

 

Όταν λέω hack εννοώ οποιαδήποτε τροποποίηση γίνει στη σελίδα από κάποιον μη εξουσιοδοτημένο. Από εκεί και πέρα ανάλογα με το hack χωρίζεται σε κατηγορίες όπως το deface. Πιστεύω ότι το χρησιμοποίησα σωστά σαν όρο.

Δημοσ.

όχι το hack σαν όρος δεν έχει καμία σχέση με την τροποποίηση (deface) μιας σελίδας. Για το url rewrite και το seo κομμάτι συμφωνώ. Επίσης είτε εκτελεί χρέη server είτε οχι ένας υπολογιστής, μπορεί να παραβιαστεί και απομακρυσμένα. Για την ασφάλεια του linux (προφανώς απέναντι σε windows εννοείς) σε γενικές γραμμές συμφωνώ. Αλλα παίζουν πολλοί παράγοντες ρόλο.

Δημοσ.

Δε μπορώ να βρω με τίποτα πως δουλεύει αυτό το ριμάδι το URL rewrite :angry:

Υποτίθεται ότι θέλω να αυτό το 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 για όποια βοήθεια

Δημοσ.

Λοιπόν !

 

Αυτό που ζητάς πάει λίγο ποιο μακριά από το 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

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...