Nông dân trên đồng ruộng và trên màn hình máy tính. Nuôi cá, bán hoa quả hạt giống và chơi đá banh từ nhỏ. Từ đáy ruột là một người đi học!
3 common security issues in Rails
Nhận đường liên kết
Facebook
X
Pinterest
Email
Ứng dụng khác
-
SQL injection
Đây là kiểu tấn công gây ảnh hưởng lên câu truy vấn dữ liệu thông qua các tham số của ứng dụng web. Thường thì chúng được dùng để vượt qua bước chứng thực hay để đánh cắp dữ liệu. Ví dụ bạn muốn tìm những project có tên được lấy từ tham số name:
Project.where("name = '#{params[:name]}'")
Tham số này có thể là 'OR 1 --. Kết quả câu truy vấn là:
SELECT * FROM projects WHERE name = '' OR 1 --'(trả về là tất cả projects).
Hay nếu tham số là
') UNION SELECT id,login AS name,password AS description,1,1,1 FROM users --
thì câu truy vấn dữ liệu là:
SELECT * FROM projects WHERE (name = '') UNION SELECT id,login AS name,password AS description,1,1,1 FROM users --' (lấy name và password của tất cả users).
Cách phòng chống:
Ruby on Rails đã xây dựng 1 filter để lọc các ký tự đặc biệt trong SQL: ', ", null và xuống dòng. Filter này được dùng tự động cho câu lệnh find hay find_by_something. Với các câu lệnh có dùng sql, thì thay vì đưa vào 1 string, ta đưa vào 1 dãy hay hash tham số đã được xử lý. Ví dụ như sau:
Dãy hay hash tham số chỉ có thể dùng cho đối tượng thuộc lớp model. Dùng sanitize_sql() ở chỗ khác.
Cross-site scripting (XSS)
Kẻ tấn công nhập vài đoạn code giả mạo. Ứng dụng web lưu nó lại và hiện thị cho nạn nhân. Đó là cách XSS hoạt động. XSS có thể đánh cắp cookie, session, hiện thị nội dung quảng cáo có lợi cho kẻ tấn công, chuyển nạn nhận về trang web giả mạo hay lấy thông tin bí mật hay cài đặt phần mềm giả mạo thông qua lỗ hỗng của ứng dụng web.
Đoạn mã giả đi từ user input. Chúng có thể là Html/Javascript Injection.
Cách chống:
Dùng hàm sanitize() để filter user input.
Dùng hàm escapeHTML() hay tên rút gọn h() để thay thế các ký tự nhập vào &, ", <, > bằng dạng hiện thị của chúng &, ", <, and >. Dùng gem SafeErb để nhắc nhở.
Cross-Site Request Forgery (CSRF)
Đây là kiểu tấn công bằng cách chèn một đoạn code giả mạo có thể truy cập vào một ứng dụng web mà người dùng đã chứng thực trước đó. Nếu người dùng chưa đăng xuất hay session chưa hết hạn thì kẻ tấn công có thể thực thi những lệnh chưa được chứng thực.
Ví dụ bạn đăng nhập vào web A (weba.com). Session thông tin chứng thực của bạn ở web A được lưu lại và chưa hết hạn. Xong rồi bạn truy cập web B. Thí dụ trong web B có 1 link hay hình ảnh có url là: http://weba.com/user/1/destroy, thì mặc định bạn đang thực hiện 1 yêu cầu có phương thức là GET tới web A kèm thèm session chứng thực trước đó đã có. Lúc này vô tình bạn đã xóa user có id=1 ở web A trong lúc truy cập web B mà bạn không hề hay biết.
Cách chống:
Dùng theo CRUD. Tức là không bao giờ dùng phương thức GET cho các lệnh kiểu sửa đổi thông tin hay xóa đối tượng. GET chỉ được dùng để lấy thông tin.
Bật chức năng protect_from_forgery with: :exception và chèn <%= csrf_meta_tags %> vào application view trong Rails lên. Khi bật lên, Rails sẽ tự động thêm 1 token cho tất cả các form hay lệnh ajax. Token lấy từ header mình đã chèn và nó được dùng để xác thực là lệnh này được thực hiện từ chính ứng dụng của mình. Nếu sai thì quăng exception.
Các biểu thức đại số được sử dụng hằng ngày đều được biểu diễn dưới dạng trung tố (infix). Cách biểu diễn này rất dễ hiểu với con người vì hầu hết các toán tử (+, -, *, /) đều là toán tử hai ngôi và chúng phân cách giữa hai toán hạng với nhau. Tuy nhiên đối với máy tính, để tính được giá trị của một biểu thức đại số theo dạng này không đơn giản như ta vẫn làm. Để khắc phục điều đó, máy tính cần chuyển cách biểu diễn các biểu thức đại số từ trung tố sang một dạng khác là tiền tố hoặc hậu tố. Thế nào là biểu thức tiền tố, trung tố và hậu tố Trong đoạn giới thiệu trên có lẽ bạn cũng hình dung được thế nào là biểu thức trung tố, hiểu đơn giản tức là toán tử sẽ được đặt giữa hai toán hạng, dĩ nhiên đây phải là toán tử hai ngôi. Vậy dựa vào vị trí của của toán tử, liệu ta có thể biểu diễn biểu thức đại số dưới dạng khác? Câu trả lời là được, và như đã nói, ta có ba cách là biểu thức tiền tố ( prefix ), trung tố ( infix ) và hậu tố ( postfix ). Hãy xem một chút giới thiệu về cách biể
OpenCV là thư viện mã nguồn mở thị giác máy tính, được phát hành dưới sự cấp phép BSD nên miễn phí sử dụng cho mục đích giáo dục lẫn thương mại. Nó hỗ trợ Window, Linux, Mac OS, iOS, Android với các ngôn ngữ lập trình C, C++, Java và Python.OpenCV được thiết kế nhằm tăng hiệu quả tính toán và tập trung vào ứng dụng thời gian thực. Được chấp nhận trên toàn thế giới, OpenCV có hơn 47 ngàn cộng đồng người sử dụng và ước tính có hơn 9 triệu lượt tải. OpenCV được sử dụng rộng rãi trên nhiều lĩnh vựa như thiết kế tương tác, rà phá mìn, người máy. Để cài đặt OpenCV cho Windows, bạn vào trang web sau để tải http://opencv.org/downloads.html hoặc http://sourceforge.net/projects/opencvlibrary/files/opencv-win/ . Hiện tại (15/11/2014) phiên bản mới nhất của OpenCV là 3.0 beta. Vì là bản 3.0 là beta, tức chưa hoàn thiên nên tôi khuyên bạn nên dùng bản 2.4.10. Sau khi tài file opencv-2.4.10.exe về bạn thực hiện theo các bước sau để tiến hành cài đặt OpenCV trên Window và Visual Studio
Tính toán là 1 công việc quan trọng trong rất nhiều ngành nghề, công việc như ngân hàng, kế toán, kiểm toán, giáo viên, quản lí,… Excel là 1 phần mềm bảng tính thông dụng giúp cho người sử dụng có thể dễ dàng thực hiện công việc của mình. Từ khi ra đời, excel đã nhanh chóng chiếm lĩnh thị phần phần mềm bảng tính và là 1 phần mềm chủ lực trong bộ Office của Microsoft. Excel được sử dụng chủ yếu thông qua các hàm. Chúng ta hãy cùng tìm hiểu về 1 vài hàm thống kê trong excel. Hàm thống kê bao gồm 3 loại hàm chính : nhóm hàm về thống kê, nhóm hàm về phân phối xác suất, nhóm hàm về tương quan và hồi quy tuyến tính.
Nhận xét
Đăng nhận xét