Skip to main content

Chống sql injection cho php

0 Bình chọn

 

Trả lời

SQL injection là một kỹ thuật cho phép những kẻ tấn công lợi dụng lỗ hổng của việc kiểm tra dữ liệu đầu vào trong các ứng dụng web và các thông báo lỗi của hệ quản trị cơ sở dữ liệu trả về để in

0 Bình chọn

SQL injection là một kỹ thuật cho phép những kẻ tấn công lợi dụng lỗ hổng của việc kiểm tra dữ liệu đầu vào trong các ứng dụng web và các thông báo lỗi của hệ quản trị cơ sở dữ liệu trả về để inject (tiêm vào) và thi hành các câu lệnh SQL bất hợp pháp
SQL injection là một kỹ thuật cho phép những kẻ tấn công lợi dụng lỗ hổng của việc kiểm tra dữ liệu đầu vào trong các ứng dụng web và các thông báo lỗi của hệ quản trị cơ sở dữ liệu trả về để inject (tiêm vào) và thi hành các câu lệnh SQL bất hợp pháp, Sql injection có thể cho phép những kẻ tấn công thực hiện các thao tác, delete, insert, update,… trên cơ sỡ dữ liệu của ứng dụng, thậm chí là server mà ứng dụng đó đang chạy, lỗi này thường xãy ra trên các ứng dụng web có dữ liệu được quản lý bằng các hệ quản trị cơ sở dữ liệu như SQL Server, MySQL, Oracle, DB2, Sysbase...
  

$user="<div>spam spam</div>";
$password="<div>spam spam</div>";
$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
            mysql_real_escape_string($user),
            mysql_real_escape_string($password));
echo $query;

Kết quả in ra là:  

SELECT * FROM users WHERE user='' AND password=''

Một ví dụ về SQL Injection  

<?php
$query = "SELECT * FROM users WHERE user='{$_POST['username']}' AND password='{$_POST['password']}'";
mysql_query($query);
$_POST['username'] = 'aidan';
$_POST['password'] = "' OR ''='";
echo $query;
?>

Câu lệnh truyền lên server sẽ là :
  

SELECT * FROM users WHERE user='aidan' AND password='' OR ''=''

Với câu lệnh này sẽ khiến 1 user đăng nhập mà không cần phải đúng password.

Bạn chưa tìm thấy câu trả lời đúng? Bạn có thể tiếp tục đặt câu hỏi tại đây