SQL injection là nỗ lực phát hành các lệnh SQL tới cơ sở dữ liệu thông qua giao diện trang web, để lấy thông tin khác. Cụ thể, thông tin này được lưu trữ thông tin cơ sở dữ liệu như tên người dùng và mật khẩu.
Quy tắc đầu tiên về việc bảo vệ bất kỳ tập lệnh hoặc trang nào đính kèm vào một cá thể cơ sở dữ liệu là Không tin tưởng người dùng nhập.
Ví dụ của bạn đang cố kết thúc chuỗi bị bỏ qua trong câu lệnh SQL. Để hiểu điều này, trước tiên bạn cần phải understand SQL statements. Trong ví dụ của bạn thêm một '
đến một paramater, 'tiêm' của bạn đang hy vọng cho các loại vật liệu làm tuyên bố:
chọn tên người dùng, mật khẩu từ những người dùng ĐÂU username = '$ username'
Bằng phụ thêm một '
để tuyên bố rằng, sau đó bạn có thể thêm paramaters SQL bổ sung hoặc truy vấn .: ' OR username --
chọn tên người dùng, mật khẩu của người dùng TỪ ĐÂU username = '' OR tên người dùng - '$ username
Điều đó là loại tiêm (một loại; Truy vấn định hình lại). Đầu vào của người dùng trở thành một câu lệnh được tiêm vào câu lệnh SQL được viết sẵn.
Nói chung có ba loại phương pháp SQL injection:
- Query định hình lại hoặc chuyển hướng (trên)
nhắn
- Lỗi dựa (Không như người dùng/mật khẩu)
- Blind Tiêm
Đọc trên SQL Injection, How to test for vulnerabilities, understanding and overcoming SQL injection và câu hỏi này (và các câu hỏi liên quan) trên StackOverflow about avoiding injections.
Edit:
Theo như thử nghiệm trang web của bạn cho SQL injection, hiểu nó nhận được rất nhiều phức tạp hơn chỉ 'nối thêm một biểu tượng'. Nếu trang web của bạn là quan trọng, và bạn (hoặc công ty của bạn) có thể đủ tiền mua nó, hãy thuê một người kiểm tra bút chuyên nghiệp. Nếu không, this great exaxmple/proof có thể cho bạn thấy một số kỹ thuật phổ biến mà người ta có thể sử dụng để thực hiện thử nghiệm tiêm.Ngoài ra còn có SQLMap có thể tự động hóa một số thử nghiệm cho SQL Injection và cơ sở dữ liệu tiếp quản các tình huống.
BẤT CỨ hộp văn bản hoặc đầu vào trên bất kỳ trang nào mà người dùng có thể nhập và nhập dữ liệu có thể có SQL injection nếu mục nhập của người dùng được chuyển vào lệnh SQL. – DOK
có thể trùng lặp của [SQL injection là gì?] (Http://stackoverflow.com/questions/601300/what-is-sql-injection) – CanSpice