What security measures should be implemented when handling user-generated content in PHP?
When handling user-generated content in PHP, it is important to implement security measures to prevent vulnerabilities such as SQL injection, cross-site scripting (XSS), and file upload attacks. One way to enhance security is by sanitizing and validating user input before processing it in the application.
// Sanitize and validate user input
$user_input = $_POST['user_input'];
$clean_input = filter_var($user_input, FILTER_SANITIZE_STRING);
// Use prepared statements to prevent SQL injection
$stmt = $pdo->prepare("INSERT INTO table (column) VALUES (:input)");
$stmt->bindParam(':input', $clean_input);
$stmt->execute();
// Use htmlspecialchars to prevent XSS attacks when displaying user input
echo htmlspecialchars($clean_input);
// Limit file upload types and size to prevent file upload attacks
$allowed_types = array('jpg', 'jpeg', 'png');
$max_size = 1048576; // 1MB
if ($_FILES['file']['size'] <= $max_size && in_array(pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION), $allowed_types)) {
move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/' . $_FILES['file']['name']);
}