What potential security risks are present in the code provided?
The code provided is vulnerable to SQL injection attacks as it directly concatenates user input into the SQL query without sanitizing it. To mitigate this risk, we should use prepared statements with parameterized queries to prevent malicious SQL injection attempts.
// Original vulnerable code
$username = $_POST['username'];
$password = $_POST['password'];
$query = "SELECT * FROM users WHERE username='$username' AND password='$password'";
$result = mysqli_query($connection, $query);
// Fixed code using prepared statements
$username = $_POST['username'];
$password = $_POST['password'];
$query = "SELECT * FROM users WHERE username=? AND password=?";
$stmt = mysqli_prepare($connection, $query);
mysqli_stmt_bind_param($stmt, "ss", $username, $password);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
Keywords
Related Questions
- What best practices should be followed when structuring PHP code to improve readability and maintainability?
- What are the best practices for handling data types when performing calculations in PHP from SQL queries?
- What is the best practice for deleting individual entries from a text file in PHP without using a database?