octa Δημοσ. 1 Δεκεμβρίου 2022 Δημοσ. 1 Δεκεμβρίου 2022 (επεξεργασμένο) Small open source PHP mysql framework Μόνο με λίγες functions για να αισθάνεται ο back end developer καλύτερα . Εδώ είναι στο github ο κώδικας. https://github.com/qipgr/outdb Επεξ/σία 1 Δεκεμβρίου 2022 από octa 1
Moderators Kercyn Δημοσ. 1 Δεκεμβρίου 2022 Moderators Δημοσ. 1 Δεκεμβρίου 2022 Εξάρχη εκεί μέσα γίνεται του injection το κάγκελο. 1
octa Δημοσ. 2 Δεκεμβρίου 2022 Μέλος Δημοσ. 2 Δεκεμβρίου 2022 Καλημέρα ! Αν δεις τον κώδικα όλες οι μεταβλητές περνάνε από την escape_string . function escape_string($memberalue) { global $db_con; return $db_con->real_escape_string($memberalue); } Οπότε δεν υπάρχει θέμα injection. Octa όχι exarhis ο exarhis πέθανε
Moderators Kercyn Δημοσ. 2 Δεκεμβρίου 2022 Moderators Δημοσ. 2 Δεκεμβρίου 2022 Υπάρχει θέμα injection. Πάρε 2 παραδείγματα: 1, 2. Κάνε prepare τα queries για να μην έχεις τέτοια προβλήματα ούτε να σπας το κεφάλι σου για το τι μπορεί να γίνει.
k33theod Δημοσ. 3 Δεκεμβρίου 2022 Δημοσ. 3 Δεκεμβρίου 2022 Ζήτημα injection υπάρχει μόνο όταν τα queries παίρνουν στοιχεία από frond end ή γενικά από έξω, όταν έχουμε κάτι για τον backend dev ποιός να κάνει injection o backend στον εαυτό του;
Moderators Kercyn Δημοσ. 3 Δεκεμβρίου 2022 Moderators Δημοσ. 3 Δεκεμβρίου 2022 2 ώρες πριν, k33theod είπε Ζήτημα injection υπάρχει μόνο όταν τα queries παίρνουν στοιχεία από frond end ή γενικά από έξω, όταν έχουμε κάτι για τον backend dev ποιός να κάνει injection o backend στον εαυτό του; Άρα βασίζεσαι στο ότι όποιος καλέσει το query θα ξέρει τι κάνει; Γιατί να μην χρησιμοποιήσεις prepared queries και να είσαι ασφαλής σε κάθε περίπτωση, από το να κάθεσαι να μαντεύεις κάθε πιθανό και απίθανο σενάριο και πώς αυτό επηρεάζει την ασφάλειά σου;
octa Δημοσ. 3 Δεκεμβρίου 2022 Μέλος Δημοσ. 3 Δεκεμβρίου 2022 1 ώρα πριν, Kercyn είπε Άρα βασίζεσαι στο ότι όποιος καλέσει το query θα ξέρει τι κάνει; Γιατί να μην χρησιμοποιήσεις prepared queries και να είσαι ασφαλής σε κάθε περίπτωση, από το να κάθεσαι να μαντεύεις κάθε πιθανό και απίθανο σενάριο και πώς αυτό επηρεάζει την ασφάλειά σου; Στο script Kercyn υπάρχουν πέρα από το SELECT και insert και update. Στο insert & update ελέγχονται οι variables Στο SELECT db() δεν ελέγχονται αλλά υπάρχει η function escape_string($memberalue) που μπορεί όποιος το χρησιμοποιεί και να το φλιτάρει. Το θέμα στη SELECT είναι η επιστροφή των αποτελεσμάτων με ωραίο τρόπο, μέσα σε arrays ή μιας μεταβλητής. Στα update και insert γίνετε το φιλτράρισμα για να γίνονται εύκολα χωρίς κόπο. Στο DELETE έχει function αλλά συνιστώ να το βάζουμε το query μέσα στο db();
Moderators Kercyn Δημοσ. 3 Δεκεμβρίου 2022 Moderators Δημοσ. 3 Δεκεμβρίου 2022 1 ώρα πριν, octa είπε Στο script Kercyn υπάρχουν πέρα από το SELECT και insert και update. Στο insert & update ελέγχονται οι variables Στο SELECT db() δεν ελέγχονται αλλά υπάρχει η function escape_string($memberalue) που μπορεί όποιος το χρησιμοποιεί και να το φλιτάρει. Το θέμα στη SELECT είναι η επιστροφή των αποτελεσμάτων με ωραίο τρόπο, μέσα σε arrays ή μιας μεταβλητής. Στα update και insert γίνετε το φιλτράρισμα για να γίνονται εύκολα χωρίς κόπο. Στο DELETE έχει function αλλά συνιστώ να το βάζουμε το query μέσα στο db(); Ξαναέριξα μια ματιά στο script, αυτό που σου είπα την πρώτη φορά ισχύει. Πέρα από το injection που είπαμε, ο κώδικάς χρίζει βελτίωσης. Δε δηλώνεις types πουθενά, το error handling είναι να εκτυπώνεις στην οθόνη, κάνεις pollute το global namespace, χρησιμοποιείς globals, κάνεις SELECT *, κάνεις SELECT * για να κάνεις update και delete, ο χρήστης του framework δε μπορεί να το φέρει στα μέτρα του, δεν υπάρχει στο Packagist κλπ κλπ κλπ. Γιατί κάποιος να μη χρησιμοποιήσει ένα ORM όπως το Doctrine και να χρησιμοποιήσει αυτό; Ναι οκ για μερικά δικά σου projects που κάνεις ως hobby μπορεί να σε έχει βολέψει, αλλά αυτό δε σημαίνει ότι είναι κατάλληλο για ευρεία κατανάλωση.
octa Δημοσ. 4 Δεκεμβρίου 2022 Μέλος Δημοσ. 4 Δεκεμβρίου 2022 Kercyn σε ευχαριστώ για το σχόλιο σου πάνω στο κώδικα που έγραψα. Να σαι καλά k33theod.
k33theod Δημοσ. 4 Δεκεμβρίου 2022 Δημοσ. 4 Δεκεμβρίου 2022 @octa κοίτα ένα object approach που ανέβασα από ένα παλιό youtube https://github.com/k33theod/php_db_mysql_pdo/blob/main/src/DBqueries.php Την DB την περνάς με Dependency στο object για τα queries και με το obj που δημιουργείς μπορείς να καλείς τις μεθόδους getall get create update delete. Έχει όλα όσα χρειάζεται για να μην γρινιάζει ο @Kercyn @Kercyn πλάκα κάνω εννοείται ότι οι παρατηρήσεις πάνω είναι σωστές
παπι Δημοσ. 5 Δεκεμβρίου 2022 Δημοσ. 5 Δεκεμβρίου 2022 Οτιδήποτε εκτός ORM είναι σε λάθος κατεύθυνση. Κάθετος σε αυτο. Τώρα σα προσπάθεια, δε θα σταθώ στο κώδικα. Θα σου έλεγα να βάλεις code formatter στο editor/ide, να δεις πως πακετάρεις σε composer ώστε να το αποκαλείς framework, τέλος εφόσον είναι procedural, θα πρέπει να ακολουθείς αυτό το paradigm (βλέπε global initializations)
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα