Πσο γίλεηαη ε πξόζβαζε ζήκεξα; Τν user input πεξλάεη από έλα server-side script κέζσ HTTP methods όπσο POST/GET Τν αίηεκα επεμεξγάδεηαη Αλάινγα αλνίγεη πξόζβαζε ζηε βάζε Query database θαη αλάθηεζε results Απνζηνιή results ζην ρξήζηε Uniform Resource Locator Protocol Host FilePath http://www.site.gr/index.html? field1=valuex&field2=valuey Client HTML file HTTP GET HTTP file Application server HTML Web server Query String DB server HTML HTML HTML Αζθάιεηα Υπνινγηζηώλ θαη Δηθηύσλ, Τκήκα Πιεξνθνξηθήο, ΜΠΣ, Ο.Π.Α., Δξ. Ι. Μαξηάο 7-1
Πσο γίλεηαη ε πξόζβαζε ζήκεξα; HyperText Transfer Protocol Πξσηόθνιιν Αίηεζε από server ή απνζηνιή ζε server ησλ webpages GET: requests a resource from a server POST: submits data to the server. e.g. a form on a webpage Hypertext Markup Language HTML Tags δειώλνπλ ζηνλ browser πώο λα εκθαλίδεη πεξηερόκελν HTML Forms <form action= http://site.com/index.jsp method= GET > Email: <input type="text" name="email > <input type="submit" value="submit"> </form> http://site.com/index.jsp?email=x@y.com Αζθάιεηα Υπνινγηζηώλ θαη Δηθηύσλ, Τκήκα Πιεξνθνξηθήο, ΜΠΣ, Ο.Π.Α., Δξ. Ι. Μαξηάο 7-2
Πσο γίλεηαη ε πξόζβαζε ζήκεξα; JavaScript Η JavaScript είλαη κηα γιώζζα γηα ηζηνζειίδεο, πνπ ζα ηξέμεη ζηνλ θπιινκεηξεηή-πειάηε. Μπνξεί λα πξνζηεζεί ζε νπνηνδήπνηε αξρείν HTML. Όηαλ ν πειάηεο θνξηώλεη ηνλ θώδηθα HTML εθηειεί ην JavaScript Γηαηί JavaScript; Μεηαθέξεη ππνινγηζκνύο θαη εθηειέζεηο ζηνλ client Personalise web pages ζηνλ θπιινκεηξεηή-πειάηε. Form validation Παξαθνινύζεζε ησλ ρξεζηώλ: ηα cookies.. Pop-up, alerts, new windows Αζθάιεηα Υπνινγηζηώλ θαη Δηθηύσλ, Τκήκα Πιεξνθνξηθήο, ΜΠΣ, Ο.Π.Α., Δξ. Ι. Μαξηάο 7-3
Πσο γίλεηαη ε πξόζβαζε ζήκεξα; JavaScript Server HTML & JS HTTP GET HTTP file Client HTML & JS JS Interpreter HTML+ JS file HTML + JS file HTML + JS file Display Αζθάιεηα Υπνινγηζηώλ θαη Δηθηύσλ, Τκήκα Πιεξνθνξηθήο, ΜΠΣ, Ο.Π.Α., Δξ. Ι. Μαξηάο 7-4
Πσο γίλεηαη ε πξόζβαζε ζήκεξα; JavaServer Pages (JSP) Επηηξέπεη λα γξάθνληαη δπλακηθέο ηζηνζειίδεο κε ρξήζε Java Μπνξεί λα ελζσκαησζεί Java ζε έλα αξρείν HTML. Ο θώδηθαο Java ζα εθηειείηαη ζην δηαθνκηζηή (server) θάζε θνξά πνπ δεηείηαη κηα ζειίδα. Γηα λα εθηειεζηεί JSP ζα πξέπεη λα ρξεζηκνπνηεζεί ζπκβαηόο webserver, π.ρ. Tomcat PHP: αληίζηνηρνο role κε JSP δεκηνπξγία ζειίδσλ web κε δπλακηθό πεξηερόκελν. Μηα ζειίδα PHP πεξλά από επεμεξγαζία από έλα ζπκβαηό webserver (π.ρ. Apache) Παξάγεηαη ζε πξαγκαηηθό ρξόλν ην ηειηθό πεξηερόκελν, πνπ ζα ζηαιεί ζην client θπιινκεηξεηή ζε κνξθή θώδηθα HTML Αζθάιεηα Υπνινγηζηώλ θαη Δηθηύσλ, Τκήκα Πιεξνθνξηθήο, ΜΠΣ, Ο.Π.Α., Δξ. Ι. Μαξηάο 7-5
Παξάδεηγκα Web application ζε book retailer Αλαδήηεζε ζε βηβιία κε βάζε ηνλ author, tittle, publisher, year, ISBN etc Accessed via SQL queries Τα δύν εξσηήκαηα: SELECT author, tittle, year FROM books WHERE publisher = 'Wiley' θαη SELECT author, tittle, year FROM books αποδεκηό από query interpreter WHERE publisher = 'Ο'Reilly' Μη αποδεκηό από query interpreter Incorrect Systax near 'Reilly', Line 1 Unclosed quotation mark before the character string ' Αζθάιεηα Υπνινγηζηώλ θαη Δηθηύσλ, Τκήκα Πιεξνθνξηθήο, ΜΠΣ, Ο.Π.Α., Δξ. Ι. Μαξηάο 7-6
Παξάδεηγκα Τν εξώηεκα: SELECT author, tittle, year FROM books WHERE publisher = 'Wiley' OR 1=1' αποδεκηό από query interpreter όπως και ηο SELECT author, tittle, year FROM books WHERE publisher = 'Wiley' OR 'α'='α' θα επιζηραθεί η πλειάδα author, tittle, year όποσ η ζηήλη publisher έτει ηιμή Wiley ή όποσ 1 είναι ίζο με 1,δηλαδή πάνηα! Αζθάιεηα Υπνινγηζηώλ θαη Δηθηύσλ, Τκήκα Πιεξνθνξηθήο, ΜΠΣ, Ο.Π.Α., Δξ. Ι. Μαξηάο 7-7
Bypassing login session Τν εξώηεκα: SELECT * FROM users WHERE username = 'marcus' AND password = 'secret' αποδεκηό από query interpreter logic: αν βρεθεί πλειάδα marcus & secret ζηη βάζη η εθαρμογή επιηρέπει ηην πρόζβαζη, διαθορεηικά ότι Τν παξαθάησ εξώηεκα παξαβηάδεη ηε ινγηθή ηεο εθαξκνγήο (επηηηζέκελνο μέξεη ην uname ηνπ admin): SELECT * FROM users WHERE username = 'admin_name' -' AND password = 'secret' αποδεκηό από query interpreter ως SELECT * FROM users WHERE username = 'admin_name' bypasses password control Αζθάιεηα Υπνινγηζηώλ θαη Δηθηύσλ, Τκήκα Πιεξνθνξηθήο, ΜΠΣ, Ο.Π.Α., Δξ. Ι. Μαξηάο 7-8
Bypassing login session Τν παξαθάησ εξώηεκα παξαβηάδεη ηε ινγηθή ηεο εθαξκνγήο (o επηηηζέκελνο δελ μέξεη ην uname ηνπ admin): SELECT * FROM users WHERE username = ' ' ΟR 1 = 1 ; -' AND password = foo' αποδεκηό από query interpreter ως SELECT * FROM users WHERE username = ' ' ΟR 1=1 Επιζηρέθονηαι από query όλα ηα ζηοιτεία ηων τρηζηών Αζθάιεηα Υπνινγηζηώλ θαη Δηθηύσλ, Τκήκα Πιεξνθνξηθήο, ΜΠΣ, Ο.Π.Α., Δξ. Ι. Μαξηάο 7-9
SQL injection attack http://www.forshop.gr?action=buy&product=x => SELECT * FROM products WHERE code= X ; Τη κπνξεί λα είλαη ην X? X= ; DROP TABLE products; -- => SELECT * FROM products WHERE code= ; DROP TABLE products; -- Αζθάιεηα Υπνινγηζηώλ θαη Δηθηύσλ, Τκήκα Πιεξνθνξηθήο, ΜΠΣ, Ο.Π.Α., Δξ. Ι. Μαξηάο 7-10
Injecting Attacks Prevention Φηιηξάξηζκα user input Syntax control (Δηαθνξεηηθνί ηύπνη input έρνπλ κηα ζπγθεθξηκέλε γιώζζα θαη ζύληαμε όηαλ ζπλδένληαη κε δεδνκέλα, δειαδή ην όλνκα, email, θιπ) Πξνζεθηηθό Error handling Error messages απνθαιύπηνπλ πιεξνθνξία πνπ κπνξεί λα ρξεζηκνπνηεζεί από hacker/ Δελ πξέπεη λα απνθαιπθζεί sensitive information VALIDATE όιεο ηηο user entered parameters Έιεγμε data types θαη lengths θαη ηύπνπο κεηαβιεηώλ Απέηξεςε unwanted data (HTML tags, JavaScript) Απέηξεςε εηδηθνύο ραξαθηήξεο (--, semi-colon, brackets) Length limit ζην input ηα πεξηζζόηεξα attacks έρνπλ long query strings Αζθάιεηα Υπνινγηζηώλ θαη Δηθηύσλ, Τκήκα Πιεξνθνξηθήο, ΜΠΣ, Ο.Π.Α., Δξ. Ι. Μαξηάο 7-11