Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

editing web.config file

Îåêßíçóå áðü ôï ìÝëïò labroutsaki. Τελευταία δημοσίευση από το μέλος Παναγιώτης Καναβός στις 04-12-2008, 15:04. Υπάρχουν 4 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  04-12-2008, 14:09 46693

    editing web.config file

    Καλησπέρα, έχω ορίσει στο web.config file που έχω φτιάξει να παίρνει ως παραμέτρους το connection string του table της βάσης μου και το όνομα του table. όταν όμως πάω να κάνω τις αλλαγές στο cs μου βγάζει error στον κώδικα παρακάτω στο linking. Μπορεί κανείς να βοηθήσει?

    string AccBalancesTableName = (string)ConfigurationManager.AppSettings["AccBalancesTableName"];

    DataSet ds = new DataSet();

    SqlCommand cm = new SqlCommand("Select Account_Number From " +AccBalancesTableName, con);

    SqlDataAdapter adapter = new SqlDataAdapter();

    adapter.SelectCommand = new SqlCommand("Select Account_Number From " +AccBalancesTableName+ "Where UserName='" +

    Request.LogonUserIdentity.Name + "'", con);

    adapter.Fill(ds, ""+AccBalancesTableName);  <==EDW VGAZEI ERROR ENW KANEI KANONIKA COMPILE

    GridView1.DataSource = ds.Tables[0].DefaultView;

    GridView1.DataBind();

  •  04-12-2008, 14:21 46694 σε απάντηση της 46693

    Απ: editing web.config file

    Καταρχήν μήπως φταίει οτι όταν συνθέτεις το string δεν αφήνεις κενό ανάμεσα στο όνομα του πίνακα και στο WHERE;

    +AccBalancesTableName+ "Where

    Θα πρέπει να γίνει

    +AccBalancesTableName+ " Where

    (με κενό πριν το W)

    για να είναι valid το command.


    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  04-12-2008, 14:26 46696 σε απάντηση της 46694

    Απ: editing web.config file

    Επίσης, γιατί δεν χρησιμοποιείς την κλάση Settings για να πάρεις με τη μία τα settings σου?

    Υ.Γ. Το ότι είναι κακό να χρησιμοποιεί κανείς dynamic SQL, ακόμα χειρότερο να περνά παραμέτρους με string concatenation αντί parameterized queries, θεωρώ ότι δεν χρειάζεται να το πούμε πάλι. Το ότι μπορεί να οδηγήσει σε προβλήματα όπως το κολλημένο WHERE είναι η πιο αθώα έκφραση του.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  04-12-2008, 14:40 46699 σε απάντηση της 46696

    Απ: editing web.config file

    Κι όμως έφταιγε το κενό που δεν υπήρχε πριν το WHERE... Θα κοιτάξω αυτό που μου είπες για τη settings, απλά είμαι λίγο αρχάρια στη γλώσσα κ γενικά στο πρόγραμμα κ κάποια πράγματα δεν τα ξέρω καθόλου

    Ευχαριστώ πολύ!

  •  04-12-2008, 15:04 46700 σε απάντηση της 46699

    Απ: editing web.config file

    Θα πρέπει να προσέξεις πολύ το θέμα του dynamic SQL, ειδικά αν ο κώδικας που γράφεις αφορά πραγματικά τράπεζα ή οποιαδήποτε μεγάλη εταιρεία. Ένας κακόβουλος web admin θα μπορούσε να πάει στο web.config σου και να αντικαταστήσει π.χ. το "AccountsTable" με "AccountsTable; delete from AccountsTable" και έτσι να σβήσει όλες τις εγγραφές την πρώτη φορά που θα εκτελεστεί το select σου. Αυτό είναι καααακό, ειδικά για τράπεζα!

    Και επειδή μπορεί να πει κανείς ότι "αν ο admin το κάνει αυτό, έχεις χάσει έτσι κι αλλιώς", να παρατηρήσω ότι συνήθως στις τράπεζες άλλοι είναι υπεύθυνοι για τους web servers, άλλοι για τις βάσεις και άλλοι για τις εφαρμογές. Οι web admins δεν έχουν πρόσβαση στις βάσεις και οι application administrators δεν έχουν πρόσβαση στους web servers και τους database servers. Οι εφαρμογές τέλος επικοινωνούν με τις βάσεις μέσω συγκεκριμένων account με περιορισμένα δικαιώματα. Χρησιμοποιώντας όμως string concatenation και παραμέτρους χωρίς έλεγχο από το web.config, έδωσες ουσιαστικά πρόσβαση στα δεδομένα της εφαρμογής στους web admins.

    Άλλο πιθανό πρόβλημα ασφάλειας δημιουργείται αν χρησιμοποιείς το Windows User name, καθώς δεν προσδιορίζει απόλυτα ένα account. Ένας κακόβουλος user admin μπορεί να διαγράψει ένα χρήστη, να τον ξαναδημιουργήσει με το ίδιο όνομα και έτσι να αποκτήσει πρόσβαση σε μία εφαρμογή στην οποία κανονικά δεν είχε δικαίωμα. Αντί για το username μπορείς να χρησιμοποιήσεις το WindowsIdentity.User property, το οποίο είναι το μοναδικό Security Identifier ενός Windows User. Ακόμα και αν δημιουργήσει κάποιος ένα χρήστη με το ίδιο όνομα, το SID θα είναι διαφορετικό.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems