Từ 1 tới 1 trên tổng số 1 kết quả

Đề tài: Bảo mật file download chỉ cần 1 dòng code. deny users="*" nghĩa là gì????

  1. #1
    Ngày gia nhập
    07 2011
    Bài viết
    12

    Mặc định Bảo mật file download chỉ cần 1 dòng code. deny users="*" nghĩa là gì????

    Code:
    	<location path="UploadFolder">
    		<system.web>
    			<authorization>
    				<deny  users="*"/>
    			</authorization>
    		</system.web>
    	</location>
    Thưa các bác, cái em định hỏi chính là dòng code màu đỏ bên trên. Vì hiểu biết về bảo mật của em hạn hẹp nên em sẽ cố trình bày vấn đề của mình rõ ràng nhất, các bác đừng vội ném gạch em.

    1. Vấn đề - giải pháp: Em đang làm 1 web app cho phép user upload-download văn bản (or file). Giải pháp bảo mật của em như sau:
    1. tbl Download chứa thông tin về path, file name... bị che giấu.


    2. tbl UserDownload dùng để làm download link, ví dụ:
    Code:
    <a href="Download.ashx?downloadID = 1">Tải file<a/>.
    Trong đó DownloadID là ID của tbl UserDownLoad này.
    Chú ý rằng đây là một trang ashx (Header handler). Kkhi user ấn vào link download thì sẽ redirect sang Download.ashx . Việc tính toán user có quyền download không sẽ được tính toán ở trang này. Nếu ok thì trả về một stream:
    Code:
                                context.Response.ContentType = GetContentType(FileLocal);
                                context.Response.AddHeader("content-disposition", "inline; filename=" + userDownLoad.DownLoad.DownLoadName );
                                context.Response.TransmitFile(FileLocal);
                                context.Response.Flush();
                                context.Response.Close();
    Mọi chuyện có vẻ ổn. user không có cách nào tiếp cận được đường dẫn của file cần download. Muốn download cần phải thông qua một header hanlder và header hanlder này sẽ đẩy về một stream data. Tuy nhiên, giả sử user biết đường dẫn của file thì sao:

    Như hình trên, user vẫn có thể download được. Em dựng hẳn cái cửa bằng header hanlder ( là file Download.ashx) check quyền download mà thằng user không không đi cửa này. Okie. Vậy thì giải pháp tiếp theo là chỉ cho user tiếp cận file download bằng cách đi qua cửa header handler này.
    2. Chỉ cho phép đi cửa header hanlder - asp.net authentication

    Như thường lệ, có người nói lập trình viên bên mình là lập trình viên trên nền tảng google =)) Mặc kệ người ta nói. Em search google thì thấy giải pháp như sau:
    Code:
    <location path="UploadFolder">
      <system.web> 
        <authorization>
          <allow roles="Staff" />
          <deny users="*" />
        </authorization>
       </system.web>
    </location>
    Có vẻ hay và áp dụng được cho vấn đề của mình. Tuy nhiên, việc authorization theo role lại này sinh một vấn đề là thằng asp.net lại tạo ra một database là ASPNETDB ở trong thư mục App_Data. Thêm nữa, muốn dùng thằng roles = "Staff" thì khi login vào lại phải add user đó vào role Staff, lại phải tạo ra đống dữ liệu ở database ASPNETDB trong khi đó mình đã tự tạo ra một db với đủ phân quyền rùi. Quá thừa thãi. Vậy thì suy luận đơn giản nhất là xóa lun thằng roles. Code sẽ chỉ còn như này:
    Code:
    <location path="UploadFolder">
      <system.web> 
        <authorization>
          <deny users="*" />
        </authorization>
       </system.web>
    </location>
    Như thế UploadFolder sẽ cấm mọi cánh cửa (trừ thằng Header hanlder). User muốn download chỉ càn cách đi qua cánh cửa Header hanlder (Download.ashx).
    ---------------------Cuối cùng, câu hỏi của em là:


    1. Thằng deny users="*" này là cái gì mà ghê gớm vậy? Vẫn biết rằng nó cấm tất cả user nhưng mà.... thậm chí em chả dùng đến (ý là không cho phép tạo ASPNETDB trong App_Data) asp.net authorization
    2. Bình thường một http request là như thế này: Download.aspx hoặc download.ashx. Vậy còn :
    Code:
    http://localhost:4932/uploadfolder/thinhhv/Danh_ba_Dien_thoai_TD129593372760819797.doc
    là cái gì thế?
    Đã được chỉnh sửa lần cuối bởi sonomi102 : 05-09-2011 lúc 01:55 AM.

Các đề tài tương tự

  1. nghĩa của 3 từ "principals", "artifacts", "securables" là như thế nào?
    Gửi bởi ntbao trong diễn đàn English for IT | Tiếng anh cho dân CNTT
    Trả lời: 2
    Bài viết cuối: 02-09-2017, 06:36 PM
  2. Dòng code "public IList<baocaovatttuDTO2> laydsbaocao()" có ý nghĩa như thế nào ?
    Gửi bởi biencute trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 27-07-2012, 04:59 PM
  3. Graphic "minimize" và "maximize" ribbon control của Dotnetbar bằng code?
    Gửi bởi thanphong1989 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 12-04-2012, 10:31 PM
  4. Borland C++ Lỗi Bị mất dòng "File Edit Search Run Compile...." của Borland C++ 3.1?
    Gửi bởi vungtroicuabo trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 24-08-2011, 06:14 PM
  5. Lỗi code In dòng "Hello World" trên C++?
    Gửi bởi cr9 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 10
    Bài viết cuối: 24-10-2010, 07:42 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn