Προς το περιεχόμενο

PHP mysql framework με functions


octa

Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)

Small open source PHP mysql framework
Μόνο με λίγες functions για να αισθάνεται ο back end developer καλύτερα .

Εδώ είναι στο github ο κώδικας. https://github.com/qipgr/outdb

 

db.png

Επεξ/σία από octa
  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Καλημέρα !

Αν δεις τον κώδικα όλες οι μεταβλητές περνάνε από την escape_string .

 

function escape_string($memberalue)
{
global $db_con;
return $db_con->real_escape_string($memberalue);
}

Οπότε δεν υπάρχει θέμα injection.

 

Octa όχι exarhis ο exarhis πέθανε 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Moderators

Υπάρχει θέμα injection. Πάρε 2 παραδείγματα: 12. Κάνε prepare τα queries για να μην έχεις τέτοια προβλήματα ούτε να σπας το κεφάλι σου για το τι μπορεί να γίνει.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ζήτημα injection υπάρχει μόνο όταν τα queries παίρνουν στοιχεία από frond end ή γενικά από έξω, όταν έχουμε κάτι για τον backend dev ποιός να κάνει injection o backend στον εαυτό του;

 

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Moderators
2 ώρες πριν, k33theod είπε

Ζήτημα injection υπάρχει μόνο όταν τα queries παίρνουν στοιχεία από frond end ή γενικά από έξω, όταν έχουμε κάτι για τον backend dev ποιός να κάνει injection o backend στον εαυτό του;

Άρα βασίζεσαι στο ότι όποιος καλέσει το query θα ξέρει τι κάνει; Γιατί να μην χρησιμοποιήσεις prepared queries και να είσαι ασφαλής σε κάθε περίπτωση, από το να κάθεσαι να μαντεύεις κάθε πιθανό και απίθανο σενάριο και πώς αυτό επηρεάζει την ασφάλειά σου;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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
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 κοίτα ένα 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 πλάκα κάνω εννοείται ότι οι παρατηρήσεις πάνω είναι σωστές

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Οτιδήποτε εκτός ORM είναι σε λάθος κατεύθυνση. Κάθετος σε αυτο.

Τώρα σα προσπάθεια, δε θα σταθώ στο κώδικα. Θα σου έλεγα να βάλεις code formatter στο editor/ide, να δεις πως πακετάρεις σε composer ώστε να το αποκαλείς framework, τέλος εφόσον είναι procedural, θα πρέπει να ακολουθείς αυτό το paradigm (βλέπε global initializations)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...