Uberalles_gr Δημοσ. 22 Σεπτεμβρίου 2010 Δημοσ. 22 Σεπτεμβρίου 2010 Καλησπέρα σε όλους, το ερώτημα μου είναι το εξής : θέλω να χρησιμοποιήσω AJAX (όπου θα χτυπάω μία σελίδα php) αλλά θέλω με κάποιο τρόπο (ΜΕ ΟΠΟΙΟΔΗΠΟΤΕ ΤΡΟΠΟ) να μην φαίνεται τι χτύπησα, να μην μπορεί να δει ο χρήστης ποια σελίδα χτύπησα, να μην μπορεί να το δει ΜΕ ΚΑΝΕΝΑΝ ΤΡΟΠΟ.
Επισκέπτης Δημοσ. 22 Σεπτεμβρίου 2010 Δημοσ. 22 Σεπτεμβρίου 2010 κάτι τέτοιο είναι αδύνατο γιατί μπορώ απλά να δω το http request...
isay Δημοσ. 22 Σεπτεμβρίου 2010 Δημοσ. 22 Σεπτεμβρίου 2010 Καλησπέρα σε όλους, το ερώτημα μου είναι το εξής : θέλω να χρησιμοποιήσω AJAX (όπου θα χτυπάω μία σελίδα php) αλλά θέλω με κάποιο τρόπο (ΜΕ ΟΠΟΙΟΔΗΠΟΤΕ ΤΡΟΠΟ) να μην φαίνεται τι χτύπησα, να μην μπορεί να δει ο χρήστης ποια σελίδα χτύπησα, να μην μπορεί να το δει ΜΕ ΚΑΝΕΝΑΝ ΤΡΟΠΟ. uberalles μπορείς να γίνεις λίγο πιο κατανοητός; Τι εννοείς «χτυπάω μια σελίδα»; Που την χτυπάς; Γράφεις μια διεύθυνση στο πεδίο διευθύνσεων; Γράφεις μια διεύθυνση σε κάποιο πεδίο φόρμας; Κάτι άλλο; Αν το ερώτημα σου ειναι πως θα αποκρύψεις τη διεύθυνση που γίνεται το request απο την ajax η απάντηση είναι δεν γινεται (βλ sfg). Αν είναι άκρως απαραίτητο, τότε μπορείς να φτιάξεις ένα script, να το βάλεις στον server και αυτό το script να κάνει το πραγματικό request. Πολύ μπέρδεμα. Σχεδιαστικά: Σελίδα χρήστη < - > server 1 <- > server 2 όπου server 2 ειναι ο server που θες να αποκρύψεις
Uberalles_gr Δημοσ. 23 Σεπτεμβρίου 2010 Μέλος Δημοσ. 23 Σεπτεμβρίου 2010 Ακριβώς αυτό θέλω να κάνω, δηλαδή να αποκρύψω την διεύθυνση που γίνεται το request απο την ajax... Είναι άκρως απαραίτητο. Δηλαδή εσύ αυτό που μου προτείνεις isay είναι να κάνω το request μου (μέσω AJAX) στον server 1, όπου ουσιαστικά η σελίδα που θα χτυπάω (php) θα κάνει νέο http request στον server 2 όπου θα μου επιστρέφει αυτό που θέλω στον server 1 και στην συνέχεια ο server 1 θα το μεταφέρει στον χρήστη.. Σωστά? Δεν καταλαβαίνω όμως τι κερδίζω με αυτό τον τρόπο.. Το θέμα όμως είναι ότι εγώ δεν θέλω να φαίνεται το http request μου γιατί μπορεί κάποιος να πάρει αυτό που χτυπάω και να ξεκινήσει να το χτυπάει για πάρτυ του και π.χ. να μου παίρνει τα δεδομένα ΚΑΤΙ ΠΟΥ ΕΓΩ ΔΕΝ ΘΕΛΩ. Για αυτό έλεγα με τι τρόπο γίνεται να μην φαίνεται..
Επισκέπτης Δημοσ. 23 Σεπτεμβρίου 2010 Δημοσ. 23 Σεπτεμβρίου 2010 μπορείς να πεις στην php σελίδα σου(server2) να απαντάει μόνο αν το request προέρχεται από μια συγκεκριμένη IP (την IP του proxy σου (server1) - αν υποθέσουμε ότι ακολουθείς την προσέγγιση του isay)
Uberalles_gr Δημοσ. 23 Σεπτεμβρίου 2010 Μέλος Δημοσ. 23 Σεπτεμβρίου 2010 Μα το θέμα είναι ότι ο άλλος θα δει το 1ο μου request στον server 1 και θα πάει να το χτυπήσει το url και αυτός και θα παίξει κανονικά.. Δεν καταλαβαίνω αυτό που λέτε
isay Δημοσ. 23 Σεπτεμβρίου 2010 Δημοσ. 23 Σεπτεμβρίου 2010 Μα το θέμα είναι ότι ο άλλος θα δει το 1ο μου request στον server 1 και θα πάει να το χτυπήσει το url και αυτός και θα παίξει κανονικά.. Δεν καταλαβαίνω αυτό που λέτε Σε συνέχεια αυτού που λεει ο sfd Η σελίδα που θα βλέπει ο χρήστης θα φιλοξενείται σε κάποιο server; Αν ναι, μπορείς να φτιάξεις το script στον server1 να ελέγχει από που γίνεται το request και για επιπρόσθετη ασφάλεια να βάλεις και κάποιο image verification (γράψτε τον τάδε αριθμό).
Uberalles_gr Δημοσ. 24 Σεπτεμβρίου 2010 Μέλος Δημοσ. 24 Σεπτεμβρίου 2010 Μα πως γίνεται να ελέγχω από που ήρθε το χτύπημα στο script μου που θα βρίκσεται στον server 1?? Νομίζω δεν γίνεται να το τσεκάρω αυτό όταν έχω χτύπημα με HTTP REQUEST
isay Δημοσ. 24 Σεπτεμβρίου 2010 Δημοσ. 24 Σεπτεμβρίου 2010 uberalles ακόμα δεν έχω καταλάβει τι εννοείς "χτύπημα http request". Μπορείς να γίνεις πιο αναλυτικός για το project που προσπαθείς να φτιάξεις; Οι σωστές απαντήσεις ερχονται μετά απο σωστές ερωτήσεις
Uberalles_gr Δημοσ. 24 Σεπτεμβρίου 2010 Μέλος Δημοσ. 24 Σεπτεμβρίου 2010 Έχω μία PHP σελίδα την index.php Μέσα στην index.php υπάρχει ένα κουμπί. Όταν το πατάω μέσω AJAX με HTTP REQUEST "χτυπάω" , / "φωνάζω" (πες το όπως θες) την σελίδα give_data.php H give_data.php κάνει ότι κάνει και μου γυρνάει κάποια δεδομέδα τα οποία τα εμφανίζω στην index.php Και το ερώτημα μου είναι πως γίνεται να μην μπορεί κάποιος να δει τι "φωνάζω" / "χτυπάω" εγώ με σκοπό να μην μπορεί να παίρνει τα δεδομένα που πάιρνω και εγώ... Δεν μπορώ να το περιγράψω πιο απλά...
isay Δημοσ. 24 Σεπτεμβρίου 2010 Δημοσ. 24 Σεπτεμβρίου 2010 Έχω μία PHP σελίδα την index.php Μέσα στην index.php υπάρχει ένα κουμπί. Όταν το πατάω μέσω AJAX με HTTP REQUEST "χτυπάω" , / "φωνάζω" (πες το όπως θες) την σελίδα give_data.php H give_data.php κάνει ότι κάνει και μου γυρνάει κάποια δεδομέδα τα οποία τα εμφανίζω στην index.php Και το ερώτημα μου είναι πως γίνεται να μην μπορεί κάποιος να δει τι "φωνάζω" / "χτυπάω" εγώ με σκοπό να μην μπορεί να παίρνει τα δεδομένα που πάιρνω και εγώ... Δεν μπορώ να το περιγράψω πιο απλά... αυτή ηταν πολύ καλύτερη περιγραφή Παρακάτω ένα παράδειγμα για να δεις πως θα ελέγχεις απο που έγινε το request και αν το επιτρέπεις ή όχι. Το παράδειγμα είναι τροποποιημένο παράδειγμα ajax από το w3schools (πάντα πρέπει να αναφέρεται η πηγή) Έστω ότι έχεις τις σελίδες j1.htm και j2.php, όπου στην j1.htm γράφεις κάποιο γράμμα (π.χ. a ή e), γίνεται κλήση (όχι φωνάζεις ούτε χτυπάς) της j2.php και επιστρέφει κάποια δεδομένα, τα οποία εμφανίζονται στην j1.htm. Με προβολή του πηγαίου κώδικα της j1.htm μπορείς να δεις που γίνεται η κλήση (στην j2.php). Στην j2.php έχουμε βάλει μια ρουτίνα ελέγχου αν η κλήση έχει γίνει από τον server και την ιστοσελίδα σου (π.χ. http://www.uberalles.gr/j1.htm ) και αν είναι αληθές, προχωρά στην επιστροφή σωστών στοιχείων, αλλιώς επιστρέφει ένα WRONG DATA. Βάλε τις παρακάτω σελίδες (με τα ονόματα όπως είναι) σε κάποιο δικό σου server και δες πως λειτουργούν. Στην αρχή της σελίδας j2.php να διορθώσεις τη μεταβλητή $sostipigi j1.htm > <html> <head> <script type="text/javascript"> function showHint(str) { if (str.length==0) { document.getElementById("txtHint").innerHTML=""; return; } if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("txtHint").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","j2.php?q="+str,true); xmlhttp.send(); } </script> </head> <body> <h3>Start typing a name in the input field below:</h3> <form action=""> First name: <input type="text" id="txt1" onkeyup="showHint(this.value)" /> </form> <p>Suggestions: <span id="txtHint"></span></p> </body> </html> j2.php > <?php //edo grapse tin pliri dieu8insi pou trexei i j1.php // p.x. $sostipigi='http://www.uberalles.gr/j1.php $sostipigi='http://www.uberalles.gr/j1.htm'; if(isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER']==$sostipigi) { // Fill up array with names $a[]="Anna"; $a[]="Brittany"; $a[]="Cinderella"; $a[]="Diana"; $a[]="Eva"; $a[]="Fiona"; $a[]="Gunda"; $a[]="Hege"; $a[]="Inga"; $a[]="Johanna"; $a[]="Kitty"; $a[]="Linda"; $a[]="Nina"; $a[]="Ophelia"; $a[]="Petunia"; $a[]="Amanda"; $a[]="Raquel"; $a[]="Cindy"; $a[]="Doris"; $a[]="Eve"; $a[]="Evita"; $a[]="Sunniva"; $a[]="Tove"; $a[]="Unni"; $a[]="Violet"; $a[]="Liza"; $a[]="Elizabeth"; $a[]="Ellen"; $a[]="Wenche"; $a[]="Vicky"; //get the q parameter from URL $q=$_GET["q"]; //lookup all hints from array if length of q>0 if (strlen($q) > 0) { $hint=""; for($i=0; $i<count($a); $i++) { if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q)))) { if ($hint=="") { $hint=$a[$i]; } else { $hint=$hint." , ".$a[$i]; } } } } // Set output to "no suggestion" if no hint were found // or to the correct values if ($hint == "") { $response="no suggestion"; } else { $response=$hint; } //output the response echo $response; } else { echo "WRONG DATA! Try again"; } ?> Στην περίπτωση σου, πρέπει να φτιάξεις τον κώδικα, ώστε από την σελίδα j2.php να καλέσεις την get_data.php (ή οτιδήποτε άλλο θες) και να τραβήξεις τα δεδομένα, τα οποία στο τέλος θα απεικονιστούν στην j1.htm Με αυτό τον τρόπο, ο απλός επισκέπτης μπορεί να δει ότι καλείς την j2.php αλλά δεν μπορεί να δει απο που πραγματικά ερχονται τα data. Σημειωση: Το HTTP_REFERER δεν είναι από τις πιο ασφαλείς μεθόδους και ο έμπειρος προγραμματιστής μπορεί να το ξεγελάσει.
Uberalles_gr Δημοσ. 24 Σεπτεμβρίου 2010 Μέλος Δημοσ. 24 Σεπτεμβρίου 2010 Σε ευχαριστώ πάρα πολύ για τον χρόνο και τον κώδικα σου....
Uberalles_gr Δημοσ. 26 Σεπτεμβρίου 2010 Μέλος Δημοσ. 26 Σεπτεμβρίου 2010 Τώρα δημιουργείτε ένα νέο πρόβλημα και είναι το εξής: Έστω κάποιος "ανταγωνιστής", βάλει 2-3 μηχανάκια να μου χτυπάνε όλη την ώρα το URL που κάνω τπ HTTP REQUEST.. Το αποτέλεσμα θα είναι να μου τον γονατίσουν τον server.. Έτσι ένας ακόμα λόγος να μην φαίνεται ποια σελίδα καλώ.. Π.χ. εάν το υλοποιούσα με flash δεν μπορείς να δεις ποιες σελίδες καλώ..
Επισκέπτης Δημοσ. 26 Σεπτεμβρίου 2010 Δημοσ. 26 Σεπτεμβρίου 2010 Π.χ. εάν το υλοποιούσα με flash δεν μπορείς να δεις ποιες σελίδες καλώ.. flash decompiler είναι η μαγική λέξη... google it...
isay Δημοσ. 26 Σεπτεμβρίου 2010 Δημοσ. 26 Σεπτεμβρίου 2010 ...Π.χ. εάν το υλοποιούσα με flash δεν μπορείς να δεις ποιες σελίδες καλώ.. Νομίζεις. Με ένα απλό sniffer μπορώ να δω ΠΟΥ κάνεις request. Στο έχει αναφέρει ο sgf απο την αρχή. Τώρα δημιουργείτε ένα νέο πρόβλημα και είναι το εξής:Έστω κάποιος "ανταγωνιστής", βάλει 2-3 μηχανάκια να μου χτυπάνε όλη την ώρα το URL που κάνω τπ HTTP REQUEST.. Το αποτέλεσμα θα είναι να μου τον γονατίσουν τον server.. ... Αυτό λέγεται DOS attack και μπορεί να στο κάνει και στην κανονική σου σελίδα. Δεν είναι τόσο απλό ούτε να το κάνεις, ούτε να το αντιμετωπίσεις (αν και η αντιμετώπιση είναι πιο εύκολη). Άμα θες να προστατέψεις την get_data από DOS attack μπορείς να την βάλεις σε αλλο server ...Έτσι ένας ακόμα λόγος να μην φαίνεται ποια σελίδα καλώ.. ... Με τον τρόπο που σου υπέδειξα (υπάρχουν και άλλοι τρόποι) μπορείς να αποκρύψεις την πραγματική get_data διεύθυνση αλλά νομίζω ότι δεν το έχεις καταλάβει. SERVER A -> j1.htm που να καλεί SERVER Α -> j2.php που να καλεί SERVER B -> get_data.php που να επιστρέφει τα δεδομένα στην j2.php Με αυτό τον τρόπο ο αναγωνιστής/επισκέπτης βλέπει ΜΟΝΟ τις j1 και j2 αλλά δεν ξέρει και δεν μπορεί να δει ΠΟΥ και ΠΟΙΑ ειναι η get_data. DOS attacks μπορούν να γίνουν στον server A αλλά όχι στον server B
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.