2012-04-30 23 views
10

Có rất nhiều cách để bảo vệ mã của bạn khỏi tấn công SQL injection. Nhưng những gì tôi yêu cầu là Cách đăng nhập tấn công tiêm sql để chúng tôi có thể thêm anh ta (kẻ tấn công-người dùng) vào cơ sở dữ liệu người dùng danh sách đen.Cách đăng nhập ai đó đang cố gắng thực hiện tiêm sql

Những gì tôi cần ở đây, là một loại chức năng sẽ trả về true nếu có tiêm sql.

<?php 
if(isset($_POST['username'])){ 
// need a function here which will return true if there's 
// a sql injection else false 
} 
?> 
+1

[Bạn đã thử gì?] (Http://mattgemmell.com/2008/12/08/what-have-you-tried/) – Songo

+5

Tại sao bạn muốn thực hiện việc này? Nếu bạn thoát đúng cách đầu vào hoặc sử dụng các câu lệnh đã chuẩn bị, bạn không phải quan tâm đến điều này chút nào. – ThiefMaster

+0

@Songo Tôi bắt đầu ở đây đầu óc. Không có gì cố gắng cho đến nay là một người mới bắt đầu trong PHP –

Trả lời

6

Bạn có thể sử dụng PHP-IDS để phát hiện các cuộc tấn công bảo mật (không chỉ SQL injection) và thêm tùy chỉnh hành vi. Trong trường hợp của tôi, tôi chạy PHP-IDS khi bắt đầu mọi yêu cầu. Nếu một vấn đề được phát hiện, tôi đăng nhập vào cơ sở dữ liệu, trả về một thông báo lỗi chung cho người dùng và die().

Được cảnh báo mặc dù PHP-IDS sẽ không phát hiện tất cả các vấn đề về SQL injection. Không thể thực hiện điều đó một cách tự động. Bạn vẫn cần xử lý đúng các truy vấn của mình.

3

Sửa: Câu trả lời này đã được thực hiện trước khi câu hỏi đã được thay đổi đáng kể. Trong khi vẫn còn hiệu lực, nó không còn giải quyết tình hình cụ thể của OP.

SQL injection là một trong những lỗ hổng ứng dụng web dễ nhất để khắc phục. Vấn đề-không gian của việc xác định các cuộc tấn công tiềm năng, ghi lại chúng, và duy trì và quản lý danh sách đen người dùng với chức năng từ chối sử dụng là một bài tập lập trình có nhiều đơn đặt hàng có độ phức tạp hơn.

Tìm hiểu cách sử dụng parameterised queries đúng cách và việc chèn SQL không phải là thứ mà bạn cần phải cân nhắc. Trong PHP, bạn có thể đạt được điều này bằng cách sử dụng các thư viện mysqli hoặc PDO. Có rất nhiều câu hỏi ở đây giải quyết vấn đề này và nhiều hướng dẫn khác mà bạn có thể tiếp cận từ googling cho "truy vấn được tham số" hoặc "báo cáo đã chuẩn bị"

2

Đừng cố gắng nấu một giải pháp trong nhà cho vấn đề nghiêm trọng như thế này. Có thể trở lại để cắn bạn trong you_know_where.

Thay vào đó, hãy cố gắng xem từ máy chủ ghi lại loại truy vấn và yêu cầu người dùng thực hiện và đưa ra quyết định dựa trên điều đó. (cho GET reqs). Đối với các yêu cầu POST, như https://stackoverflow.com/a/10383937/561269 cho biết, bạn có thể sử dụng nó.

Các vấn đề liên quan