PDA

Επιστροφή στο Forum : στη φορμα επικοινωνιας πως θα ορισω υποχρεωτικα πεδια ?



geioannou
28-02-09, 11:28
στη φορμα επικοινωνιας πως θα ορισω υποχρεωτικα πεδια ?
να μην μπορει να στελει μηνυμα χωρις να εχει συμπληρωσει κατι ο επισκεπτης

mpardsu
28-02-09, 22:15
Μπορείς να το κάνεις με javascript, αλλά αυτό δεν εγγυάται ότι κάποιος δεν θα αφήσει κενά κάποια fields. Η καλύτερη λύση είναι να το ελέγχεις στον server, ανάλογα με το που κάνει post η φόρμα, και με τη γλώσσα που χρησιμοποιείς.

bdimitrak
28-02-09, 22:25
αλλά αυτό δεν εγγυάται ότι κάποιος δεν θα αφήσει κενά κάποια fields.

Για ποιο λόγο?

geioannou
28-02-09, 22:48
νομιζα οτι θα ηταν κατι πολυ πιο απλο.
οτι θα ηταν καποιο ρυθμιση απο την ιδια την φορμα.....

mpardsu
01-03-09, 14:37
Για ποιο λόγο?

Γιατί είναι client-side scripting γλώσσα και άρα φεύγει από τον έλεγχο του προγραμματιστή. Η πολύ απλή περίπτωση είναι να έχει απενεργοποιημένη τη JS o χρήστης, συνεπώς θα παρακάμψει τους μηχανισμούς ελέγχου, η πιο περίπλοκη ότι θα "πειράξει" τον κώδικα σου για να κάνει τα δικά του.

Γενικότερα sanitization και validation γίνονται σαν πρόσθετα στην πλευρά του χρήστη, αποκλειστικά προκειμένου για να εξοικονομηθεί χρόνος και bandwidth (να μη χρειαστεί να πάνε τα δεδομένα πίσω στο server αν δεν είναι ΟΚ).

geioannou
01-03-09, 15:05
καποτε που ειχε πεσει ενα βιβλιο του dreamweaver θημαμε οτι καπου στις φορμες ελεγε κατι οπου μπορουσες να κανεις αυτο που θελω αλλα μεσα απο το περιβαλλον του dreamweaver και οχι να ανακατευτεις με γλωσσες κλπ....
δεν γινετε καπως ετσι ?

bdimitrak
01-03-09, 16:21
Δεν έχω ασχοληθεί με το ζήτημα αλλά κάποιες παρατηρήσεις:


Γιατί είναι client-side scripting γλώσσα και άρα φεύγει από τον έλεγχο του προγραμματιστή.

Δεν καταλαβαίνω ακριβώς τη φράση "φεύγει από τον έλεγχο του προγραμματιστή".


Η πολύ απλή περίπτωση είναι να έχει απενεργοποιημένη τη JS o χρήστης, συνεπώς θα παρακάμψει τους μηχανισμούς ελέγχου, η πιο περίπλοκη ότι θα "πειράξει" τον κώδικα σου για να κάνει τα δικά του.

Άν κάποιος απενεργοποιήσει τη JS από το browser του, τότε πολύ απλά δεν θα μπορεί να κάνει καν submit τη φόρμα, άρα δεν θα παρακαμφθεί κανένας μηχανισμός ελέγχου. Για τη πιο περίπλοκη περίπτωση, κάποιος μπορεί να "πειράξει" το κώδικά σου και στη περίπτωση server-side scripting language (είναι γνωστές πολλές περιπτώσεις που δημιουργήθηκαν κενά ασφαλείας σε php κώδικα), άρα ο σκοπός είναι να γράφεται secure κώδικας.


Γενικότερα sanitization και validation γίνονται σαν πρόσθετα στην πλευρά του χρήστη, αποκλειστικά προκειμένου για να εξοικονομηθεί χρόνος και bandwidth (να μη χρειαστεί να πάνε τα δεδομένα πίσω στο server αν δεν είναι ΟΚ).

Όταν λες "σαν πρόσθετα", εννοείς ότι για να τσεκάρεις ότι ένα e-mail address έχει τη σωστή μορφή (regex) θα πρέπει να γίνεται και στο client και στο server?

mpardsu
01-03-09, 23:27
Δεν καταλαβαίνω ακριβώς τη φράση "φεύγει από τον έλεγχο του προγραμματιστή".

Ο κώδικας της javascript εκτελείται στον client και λόγω του ότι παίρνει όλο το source (καθώς είναι scripting γλώσσα και όχι compiled) μπορεί να δει ακριβώς το τι κάνει. Επίσης είναι πάρα πολύ εύκολη η παραμετροποίηση του συνεπώς δεν είναι ασφαλής.


Άν κάποιος απενεργοποιήσει τη JS από το browser του, τότε πολύ απλά δεν θα μπορεί να κάνει καν submit τη φόρμα, άρα δεν θα παρακαμφθεί κανένας μηχανισμός ελέγχου. Για τη πιο περίπλοκη περίπτωση, κάποιος μπορεί να "πειράξει" το κώδικά σου και στη περίπτωση server-side scripting language (είναι γνωστές πολλές περιπτώσεις που δημιουργήθηκαν κενά ασφαλείας σε php κώδικα), άρα ο σκοπός είναι να γράφεται secure κώδικας.

Εξαρτάται. Αν όλη η form δημιουργείται από τη javascript τότε ναι, δεν θα το δεί καθόλου και δεν πρόκειται να κάνει submit κάτι. Αν όμως μιλάμε για ένα απλό html form στο οποίο γίνεται validation μέσω js τότε μπορεί και να παίξει και να το κάνει. Εξαρτάται από την υλοποίηση.
Όσον αφορά το να πειράξει κανείς το server side κώδικα, τουλάχιστον σε php, δεν είναι και τόσο απλό, αν δεν έχει κάνει μαϊμουδιές ο προγραμματιστής. Αν βέβαια σε έχει βάλει στο μάτι κάποιος με εμπειρία, εκεί ζορίζουν τα πράγματα, αλλά και πάλι υπάρχουν αρκετές λύσεις.


Όταν λες "σαν πρόσθετα", εννοείς ότι για να τσεκάρεις ότι ένα e-mail address έχει τη σωστή μορφή (regex) θα πρέπει να γίνεται και στο client και στο server?

Απαραίτητα, θα γίνεται στον server προκειμένου να γίνει το validation (regex) και το sanitization, να "κοπούν" δηλαδή χαρακτήρες οι οποίοι μπορεί να επηρρεάσουν την εκτέλεση κάποιου SQL query με καταστροφικές, συνήθως, επιπτώσεις.
Το να ενσωματώσει κανείς αντίστοιχους μηχανισμούς και στη πλευρά του πελάτη δεν είναι απαραίτητο, αν και μπορεί να βελτιώσει την απόκριση της form σε λάθη.
Αυξάνει βέβαια το μέγεθος του κώδικα της σελίδας, αλλά ο σκοπός αυτής της κίνησης είναι να βελτιώσει την εμπειρία του χρήστη και όχι το να ασφαλίσει την εφαρμογή/σελίδα/etc.

........Auto merged post: mpardsu πρόσθεσε 3 λεπτά και 38 δευτερόλεπτα αργότερα ........


καποτε που ειχε πεσει ενα βιβλιο του dreamweaver θημαμε οτι καπου στις φορμες ελεγε κατι οπου μπορουσες να κανεις αυτο που θελω αλλα μεσα απο το περιβαλλον του dreamweaver και οχι να ανακατευτεις με γλωσσες κλπ....
δεν γινετε καπως ετσι ?

O κλασσικός τρόπος που το κάνει το dreamweaver είναι με javascript μέσω του form inspector, ή κάπως έτσι, αλλά έχει τα προβλήματα που αναφέρω πιο πάνω. Τι ακριβώς θέλεις να κάνεις?

Ένας πολύ καλός και εύκολος form creator, αν δεν θέλεις να μπλέκεις, είναι το wuffoo (http://wufoo.com/). Έχει δωρεάν και επί πληρωμή, διαλέγεις ανάλογα με τις ανάγκες σου και παίρνεις.. ;)

@ ADSLgr.com All rights reserved.