📢 Loạt tính năng mới: Kết nối tài khoản Diễn Đàn với toàn bộ Thư Viện (Truyện/Thơ/Nhạc/Phim/Ẩm Thực)
Xin chào cả nhà!


Ban quản trị vừa hoàn tất một loạt tính năng mới, kết nối tài khoản Diễn Đàn với toàn bộ các khu vực Truyện, Thơ, Nhạc, Phim và Ẩm Thực. Xin tổng kết lại để mọi người tiện theo dõi và sử dụng:

1. Đăng nhập dùng chung toàn site
Chỉ cần 1 tài khoản Diễn Đàn, đăng nhập một lần là dùng được ở mọi khu vực. Nút "Đăng nhập / Đăng ký" đã thay cho "Giới thiệu / Trợ giúp" cũ ở đầu mỗi trang.

2. Thảo luận ngay dưới tác phẩm
Mỗi truyện, bài thơ, bài hát, phim, món ăn giờ có khung bình luận riêng ngay trên trang đọc/nghe/xem - không cần qua diễn đàn mới góp ý được. Bình luận đầu tiên sẽ tự tạo 1 chủ đề trong mục "💬 Thảo Luận Tác Phẩm Thư Viện" để mọi người cùng trao đổi.

3. Theo dõi tác phẩm
Bấm "🔔 Theo dõi tác phẩm" để nhận thông báo qua email ngay khi truyện có chương mới.

4. Yêu thích & Lịch sử đọc
Đánh dấu "⭐ Yêu thích" các tác phẩm ưng ý, và hệ thống tự ghi lại "🕘 Lịch sử đọc" mỗi khi bạn ghé đọc/nghe/xem - đồng bộ theo tài khoản, xem lại bất cứ lúc nào trong menu thành viên.

5. Huy hiệu hoạt động
Một vài huy hiệu nhỏ (bình luận viên, người theo dõi, người sưu tầm, thành viên kỳ cựu...) sẽ tự xuất hiện trên hồ sơ khi bạn hoạt động tích cực - hoàn toàn không phải hệ thống điểm/tiền thưởng, chỉ mang tính ghi nhận cho vui.

6. Ghi công người đóng góp
Tên người đăng nội dung (đánh máy, sưu tầm...) giờ sẽ tự động liên kết về hồ sơ Diễn Đàn nếu trùng với một tài khoản đang có trên diễn đàn.

7. Báo lỗi nội dung
Phát hiện lỗi chính tả, thiếu nội dung, ảnh hỏng... trong lúc đọc? Bấm "🚩 Báo lỗi nội dung" ngay trên trang, không cần rời khỏi tác phẩm đang xem.

8. Cải thiện giao diện trên điện thoại
Đầu trang và khu vực diễn đàn đã được chỉnh lại cho gọn gàng hơn trên màn hình nhỏ.

Rất mong nhận được góp ý thêm từ cả nhà để hoàn thiện dần. Cảm ơn mọi người đã luôn đồng hành cùng Việt Nam Thư Quán!

Diễn Đàn » Hướng Dẫn Lập trình

Ngăn chặn kiểu tấn công SQL Injection trong VB.NET

0 trả lời, 324 lượt xem — Trang 1 / 1
<Bài viết đã được chỉnh sửa lúc 2007-03-09 09:33:10dvbooks>
Vấn đề:  Bạn muốn giảm thiểu cơ hội cho những kẻ tấn công khi họ đưa mã SQL nguy hiểm vào các giá trị thông số lệnh.
Giải quyết:  Sử dụng một truy vấn được-thông-số-hóa (parameterized query).
Nhiều ứng dụng xây dựng các câu lệnh SQL động bằng cách phân tích các mẩu rời thành một chuỗi lớn. Cách tiếp cận này phát sinh vấn đề khi làm việc với dữ liệu nhị phân, và cũng dựng lên khả năng một kẻ tấn công có thể thực thi mã SQL nguy hiểm bằng cách “tiêm” nó vào một giá trị thông số. Mã nguy hiểm này có thể được sử dụng để can thiệp vào thông tin trong cơ sở dữ liệu hoặc ngay cả chạy một ứng dụng khác trên server. Bạn có thể xem một số ví dụ đáng sợ trên các server cơ sở dữ liệu tại [http://www.owasp.org/asac/input_validation/sql.shtml].
Để ngăn chặn vấn đề này, bạn nên xác nhận tính hợp lệ của đầu vào do người dùng cung cấp, kiểm tra rằng nó có kiểu dữ liệu đúng như mong muốn, không dài khác thường, v.v... Cách dễ nhất để thực hiện điều này là sử dụng một truy vấn được-thông-số-hóa.
Các truy vấn được-thông-số-hóa được sử dụng cho tất cả các lời gọi thủ tục tồn trữ, nhưng bạn cũng có thể sử dụng chúng với các lệnh SQL động. Trong trường hợp thứ hai, bạn chỉ cần lấy một lệnh SQL bình thường và thay thế các giá trị động với các thông số (kết quả sẽ trông giống như phần thân của một thủ tục tồn trữ đơn giản). Dưới đây là một lệnh SQL được-thông-số-hóa:
INSERT INTO Shippers (CompanyName, Phone) VALUES (@CompanyName, @Phone)
Để sử dụng lệnh này, bạn cần thêm các đối tượng Parameter tương ứng vào đối tượng Command (với các giá trị phù hợp). Trường hợp này yêu cầu hai thông số (@CompanyName và @Phone). Ứng dụng Console dưới đây sử dụng truy vấn được-thông-số-hóa này để thêm một bản ghi mới vào bảng Shippers của cơ sở dữ liệu Northwind.
Public Module ParameterizedQuery
       Private ConnectionString As String = "Data Source=localhost;"&_"Integrated Security=SSPI;Initial Catalog=Northwind"
       Public Sub Main()
        ' Tạo kết nối và câu lệnh.
        Dim Con As New SqlConnection(ConnectionString)
        Dim UpdateSQL As String = "INSERT INTO Shippers " & _          "(CompanyName, Phone) VALUES (@CompanyName, @Phone)"
        Dim Cmd As New SqlCommand(UpdateSQL, Con)
        ' Thêm các thông số nhập.
        Dim Param As SqlParameter = Cmd.Parameters.Add("@CompanyName", _ SqlDbType.NVarChar, 40)
        Param.Value = "Test Company"
        Param = Cmd.Parameters.Add("@Phone", SqlDbType.NVarChar, 24)
        Param.Value = "(503) 555-9931"
        Try
            ' Thực thi câu lệnh.
            Con.Open()
            Dim Rows As Integer = Cmd.ExecuteNonQuery()
            Console.WriteLine(Rows.ToString() & " row(s) affected.")
        Catch Err As Exception
            Console.WriteLine(Err.ToString())
        Finally
            Con.Close()
        End Try
        Console.ReadLine()
    End Sub
 End Module
 
 Trích từ "Các giải pháp lập trình Visual Basic. Net (tập 2)"
Đăng nhập để trả lời
0