Tôi đang làm việc trên ứng dụng máy tính để bàn đầu tiên truy vấn LDAP. Tôi đang làm việc trong C dưới unix và sử dụng opends, và tôi mới làm quen với LDAP. Sau khi woking một thời gian trên đó tôi nhận thấy rằng người dùng có thể thay đổi truy vấn LDAP bằng cách tiêm mã độc hại.
Tôi muốn biết kỹ thuật khử trùng nào được biết đến, không chỉ cho phát triển C/unix mà còn trong các thuật ngữ tổng quát hơn, tức là phát triển web, v.v.
Tôi nghĩ rằng thoát bằng và dấu chấm phẩy là đủ, nhưng không chắc chắn.Ngăn chặn tiêm LDAP
Đây là một mảnh nhỏ của mã để tôi có thể làm cho rõ ràng hơn câu hỏi:
String ldapSearchQuery = "(cn=" + $userName + ")";
System.out.println(ldapSearchQuery);
Rõ ràng tôi cần phải khử trùng $ userName, như đã nêu trong này OWASP ARTICLE
Có RFC nói về thoát bộ lọc tìm kiếm LDAP (http://www.ietf.org/rfc/rfc2254.txt) nhưng không tập trung vào bảo mật. Tuy nhiên, nó liệt kê các mục sau đây khi yêu cầu thoát: *() \ và NUL (0x00). Vì vậy, tôi sẽ thêm dấu hoa thị và dấu gạch chéo ngược vào danh sách của bạn. Không thể tìm thấy bất kỳ nguồn thực sự có thẩm quyền nào cho chủ đề này. Không chắc chắn nếu có một số góc unicode bạn cần phải lo lắng về, là tốt. Cá nhân, tôi đã sử dụng một danh sách trắng rất hạn chế (chữ số, ký tự, dấu gạch dưới và không gian) về cách triển khai của tôi. –
+1 câu hỏi hay. – rook
có thể trùng lặp của [Cách thoát chuỗi trong C#, để sử dụng trong truy vấn LDAP] (http://stackoverflow.com/questions/649149/how-to-escape-a-string-in-c-for-use -in-an-ldap-query) – Randolpho