Code Monkey home page Code Monkey logo

Comments (2)

staabm avatar staabm commented on May 28, 2024

I think phpstan-dba will have different views/solutions on this problem

  • add a RuntimeConfiguration which allows enforcing literal-string queries
  • add a Rule which checks whether proper ' quoting is used arround quoting functions/methods like real_escape_string
  • maybe something more I don't have thought about yet

from phpstan-dba.

craigfrancis avatar craigfrancis commented on May 28, 2024

While I'd prefer literal-string to be the primary method (and to make developers aware of it); the real_escape_string() one could work... but some things to keep in mind, where it's not simply surrounded by single quotes, making them risky, but technically valid:

  • "WHERE name = '" . $mysqli->real_escape_string($name_first) . " " . $mysqli->real_escape_string($name_last) . "'"
  • "WHERE name LIKE '%" . $mysqli->real_escape_string($name) . "%'"
  • "WHERE name REGEXP '^" . $mysqli->real_escape_string($name) . "'" (as an aside, it's risky allowing user values in a RegEx, could create a denial of service with an overly complex pattern).
  • "WHERE name = '" . $db->escape($name) . "'" (not calling real_escape_string directly)
  • "WHERE id = " . intval($id)
  • "WHERE id IN (" . implode(",", array_map("intval", $ids)) . ")" (really hope they always remember to call intval, I've seen a few cases where that wasn't the case).
  • 'WHERE name = "' . $mysqli->real_escape_string($name) . '"' (a string could use double quotes, even though it's not ideal, e.g. ANSI_QUOTES mode treating double quotes as an identifier).
  • Escaping doesn't always play well with mixed character encodings, or NO_BACKSLASH_ESCAPES .

from phpstan-dba.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.