-
11-04-2011, 12:30 PM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
SQL Injection, làm thế nào để bết tên database, tên column?
theo mình biết trên net thì inject sẽ làm ảnh hưởng lớn đối với csdl. Inject đồi hỏi phải biết được tên table tên cột ....
câu hỏi của mình ở đây là làm sao họ biết được các tên trong csdl của mình và cách phòng tránh việc lộ các tên table , tên cột?
Câu hỏi thêm là có bao nhiu cách xâm nhập và phá hại web người khác, cho cái tên ?View more random threads:
- Cách tạo lịch trên Web trong lập trình ASP.NET như của cộng đồng c Việt.
- Cách gửi dữ liệu trong khung tìm kiếm (nằm ở layoutPage) đến trang Tìm kiếm (Controller Product, View Search) trong MVC4
- Cách gởi và xác nhận mã đăng ký qua mail asp.net
- Làm web đa ngôn ngữ (Việt - Anh) như thế nào với ASP.NET
- Cách lọc sản phẩm theo tên gần đúng trong LinQ
- Xin hướng dấn làm web asp.net với C# dùng masterpage
- Cách dùng girdview ASP.NET để kiểm tra sự tồn tại của dữ liệu trong database?
- Điều khiển checkbox của 1 trang web có sẵn (Code để tự động check 1 checkbox)
- Làm sao để tự động chèn 1 Video vào web ?
- ? Làm scroll bar cho nhiều khung hiển thị ntn?
-
11-04-2011, 12:41 PM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Muốn biết tên table thì dựa vào thông báo lỗi, muốn biết tên cột thì liệt kê nó ra thôi. Nếu database có mức độ bảo mật không cao, thì cả tên table cũng có thể liệt kê ra.
Có bao nhiêu cách phá hoại, kể tên ah? Câu hỏi này Kevin nhường cho các cao nhân trả lời bạn!
-
11-04-2011, 01:38 PM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
thanks Kevin Hoang
cho mình hỏi thêm:
csdl sao mới gọi là bảo mật cao?
làm sao mới liệt kê tên cột được?
trên form web mình ko để lộ ra cái tên cột nào hết, vậy họ có thể tìm ra tên cột ko?
về việc lỗi thì nếu sử lý trong sql thì còn có thể dựa vào lỗi mà biết được tên table nửa không?
-
11-04-2011, 01:54 PM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
có url: http:\\abc.com?msv=1
ví dụ có câu truy vấn sau:
Mã:delete from sinhvien where masv='"+Request.Querystring["msv"]+"';
http:\\abc.com?msv=1' or 1=1 (1=1 luôn đúng)
ghép lại:Mã:delete from sinhvien where masv='1' or 1=1
-
11-04-2011, 03:28 PM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
cám ơn các pro quan tâm đến bài này.
-
11-04-2011, 03:59 PM #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
SQL Injection thường chỉ xảy ra với nhưng ngưới mới lập trình thôi.
Họ hay lợi dung các Query String giống như dưới đây chằng hạn và thêm nữa là các escaped character và comments của SQL Query
http://forums.congdongcviet.comewr...ote=1&p=226164
Ví dụ bạn viết code C# như sau
String A = "Select * FROM TABLEX where [Col1] = ' " + Col1Value + " ' " AND [COL2] = ' ABCD ' ;
Nếu như bạn không xử lý Col1Value kỹ thì họ có thể sửa lại SQL String
Họ sẽ sửa Col1Value như sau : X'; Attack ngay tại chỗ này, viết gì cũng được --
Như vậy String A sẽ là
Select * FROM TABLEX where [Col1] = 'X'; Attack SQL --' AND [COL2] = ' ABCD '
Như vậy cái đoạn Select * FROM TABLEX where [Col1] = 'X'; vẫn được execute + thêm cái đoạn Attack SQL , còn cái phần sau dấu -- sẽ bị bỏ qua vì SQL Engine nghĩ đó là Comments
Cách phòng tránh thì bạn dùng SQL Parameters
String A = "Select * FROM TABLEX where [Col1] = @Name1 AND [Col2] = 'ABCD'"
như vậy SQL parameter là
SqlParameter X = new SqlParameter("@Name1", Col1Value);
rồi add nó vô SQLCommand, cho execute
Tránh dùng String Concatenation
Vệ sinh cá nhân là một phần quan yếu của sức khỏe nam giới. Dùng dung dịch vệ sinh mỗi ngày mang lại nhiều ích, giúp loại bỏ vi khuẩn và vi sinh vật gây hại, giúp khu vực cơ quan sinh dục luôn sạch...
Gel vệ sinh cu, bạn trai có nên...