Tại mục Network Component, cấu hình các thông số cho giao thức TCP/IP và cài thêm các giao thức Next

Một phần của tài liệu Quá trình xây dựng Website pdf (Trang 62 - 78)

- Chuấn bị đĩa Source cài đặc Windows Server 2003: tạo tập tin trả lời tự động bằng Setup Manager.

g.Tại mục Network Component, cấu hình các thông số cho giao thức TCP/IP và cài thêm các giao thức Next

thêm các giao thức… Next

h.Tại mục Workgroup or Domain, cho phép máy gia nhập vào Workgroup or Domain có sẵn.

Sau khi đã điền đầy đủ các thông số thì Setup Maneger sẽ tạo ra 3 tập tin đó là: • Unattend.txt: đây là tập tin trả lời, chứa tất cả các câu trả lời mà Setup Maneger thu thập được.

• Unattend.udb: đây là tập tin cơ sở dữ liệu chứa tên các máy tính sẽ được cài đặt. tập tin này chỉ được tạo ra khi bạn chỉ định danh sách các tập tin và được sử dụng khi bạn thực hiện cài đặt tự động.

• Unattend.bat: chứa dòng lệnh với các tham số được thiết lập sẵn. tập tin này cũng thiết lập các biến môi trường chỉ định các tập tin liên quan.

Cách sử dụng tập tin trả lời: sửa tập tin Unattend.txt thành WINNT.SIF và lưu trên đĩa mềm.

cài đặt trên đĩa CD sẽ tự động tìm đọac tập tin WINNT.SIF trên đĩa mềm và tiến hành cài đặt không cần theo dõi.

Hướng dẫn sử dụng Navicat để Create , Backup , Restore Database

Bạn thường sử dụng phpmyadmin cho việc tương tác với MySQL , Navicat cũng có chức năng tương tự như phpmyadmin , tuy nhiên nó còn có nhiều tính năng mà phpmyadmin ko thể có được . Ở đây tớ chỉ hướng dẫn cách tạo database , backup và restore database bằng cách sử dụng Navicat , các chức năng khác các bạn có thể tự tìm hiểu thêm . Màn hình chính của Navicat như sau :

Đầu tiên ta tạo 1 connection với MySQL bằng cách click vào nút Connection :

Cửa sổ Connection hiện ra , bạn điền các thông tin vào , rồi nhấn Test Connection , nếu báo Connection Successful thì bạn đã thành công kết nối với MySQL . Bấm OK để hoàn tất .

Bây giờ chúng ta sẽ tạo 1 database mới . Right Click vào tên Connection ( có thể ở bất cứ chỗ nào trong cột Connection ) chọn New Database … , một cửa sổ mới hiện ra , bạn điền tên Database muốn tạo vào rồi click OK .

Bây giờ bạn đã có 1 database mới , nó cũng được liệt kê ở cột Connection .

Để backup 1 database (ở đây ta sẽ thử backup database mysql ) , bạn chọn database cần backup ở cột Connection , click vào nút Backup , sau đó click vào New Backup , ở cửa sổ mới hiện ra bạn click Start để bắt đầu , sau khi hoàn tất , click Close . Thông tin về các file backup sẽ được hiển thị . Để Restore các file backup ta chỉ việc click vào file backup đó rồi click vào nút Restore Backup là được . Để xuất file backup ra định dạng file *.sql ta right click vào file backup trên danh sách rồi chọn Extract SQL , lưu lại file ở nơi mà bạn muốn .

Giả sử bạn muốn restore 1 file sql nào đó ko nằm trong bảng backup thì bạn chọn database , sau đó click vào nút Query . Chọn New Query . Một cửa sổ mới hiện ra , bạn chọn Load để open file sql cần restore , sau đó click Run và chờ cho đến khi nó báo thành công .

Đây là các bước cơ bản để Create , Backup , Restore Database .

Cách cài PHP Nuke trên Local - ST

Trước tiên bạn phải có IIS, (dùng APACHE cũng được, nhưng tôi thấy cái này nó hơi rắc rối). Còn tôi, tôi dùng IIS 5.0 trong Windows 2000. Giới thiệu một chút, tôi không phải là một programmer, bài viết trên đây là tổng hợp kinh nghiệm của tôi, vì thế hướng dẫn trên đây có thể có nhầm lẫn đôi chút, mong các bạn bỏ qua.

Sau khi cài IIS, bạn sẽ có domain là http://localhost/ và thư mục root là C:\inetpub\wwwroot\.

Để cài PHP - NUKE, bạn cần phải có những dụng cụ sau: * PHP-Nuke 5.5

* mySQL 3.23.49 * PHP 4.2.0 Bước 1 :

Trước tiên, máy bạn phải cài php và MySQL, cách cài anh Thành đã hướng dẫn, các bạn hãy đọc lại nếu chưa biết cách cài (http://www.diendantinhoc.net/tute/hethong/apache- mysql-php-perl/)

File php-NUKE bạn download về ở trên là file nén có đuôi tar.gz. Bạn cần có chương trình để giải nén, ở đây tôi dùng Winzip.

Mở thư mục đã bung nén, di chuyển thư mục html (Tất cả các files trong đó) trong thư mục đã bung vào thư mục root trong máy bạn (trên máy của tôi là C:\inetpub\wwwroot\ Đây là thư mục mặc định khi cài IIS)

Bước 2 : Chỉnh Database

Bạn cần tao database cho php-NUKE trên MySQL. Trong thư mục vừa giả nén, bạn vào thư mục sql, copy và paste file nuke.sql vào thư mục c:\mysql\bin (Đây là thư mục cài MySQL mặc định, có thể của bạn sẽ khác tuỳ theo cách cài). Bây giờ, nhấn Start - >program -> Accessories -> và chọn Command Prompt, bạn sẽ thấy DOS qua cửa sổ trên. Trong DOS, bạn làm như sau:

* Gõ cd c:\mysql\bin và nhấn Enter

* Gõ mysqladmin create nuke và nhấn Enter * Gõ mysql nuke < nuke.sql và nhấn Enter * Đóng cửa sổ Command Prompt

Nếu làm nguyên si các bước trên, bạn đã tạo được database trong mySQL cho php- NUKE. Còn không được, hãy thử làm lại, vẫn tiếp tục không được, bỏ qua bài này, đừng cố cài nữa.

Bước 3: chỉnh file php.ini (adsbygoogle = window.adsbygoogle || []).push({});

Sau khi cài PHP, trong máy của bạn sẽ có file php.ini trong c:\winnt, bạn cần phải thay đổi một chút thì mới chạy php-NUKE được. Nào, bây giờ ta dùng một chương trình để sửa file php.ini, tôi dùng Notepad có trong windows, vào thư mục c:\winnt , mở file php.ini và làm như sau :

* Tìm dòng register_globals và thay đổi thành On

* Tìm dòng error_reporting và chuyển E_ALL thành off

* Tìm dòng include_path và thêm vào dưới dòng đó đường dẫncủa thư mục root : ".;c:\inetpub\wwwroot"

* SAVE lại và EXIT.

* (Chú ý : Nếu bạn dùng Notepad hãy nhấn F3 rồi gõ từ cần tìm vào hộp tìm kiếm) Để đỡ rắc rối, các bạn hãy copy paste nguyên nội dung file này vào file php.ini của bạn. File đó đây

Bước 4 : Chỉnh IIS để sử dụng php

Mở Control Panel ->Administrative Tools ->Internet Services Manager, nhấn chuột phải vào website và chọn Properties, Click tab Home Directory, đổi thành Scripts and

Executables Trong Execute Permissions. Chọn Configuration, trong tab App Mappings chọn Add. trong hộp Executable bạn cần browse tới file php.exe trong thư mục đã install PHP (thường là c:\php\php.exe). Thêm %s %s và phía sau thành c:\php\php.exe %s %s. Gõ vào hộp Extension dòng chữ sau .php (Có cả dấu chấm). Nhấn Apply / OK / OK . Bước 5 : Chỉnh php-NUKE

Mở file config.php trong thư mục html ở trên và chỉnh lại các dòng sau: * dòng 32 chỉnh thành $dbhost = "localhost"

* dòng 33 chỉnh thành $dbuname = "Đây là user name bạn đã đặt khi cài mySQL" (mặc định là root)

* dòng 34 chỉnh thành $dbpass = "Đây là mật khẩu bạn đã đặt khi cài mySQL" (mặc định là để trống)

Úmbala để xóa xxx dòng $foot 1 = "xxx" trong đó , (Đừng xóa dấu "") Làm tương tự từ dòng 86 đến dòng 88, từ $foot 1 tới $foot 4 và save lại OK, đã xong. bây giờ, mở internet Explorer ra, gõ vào dòng Address : http://localhost/html/admin.php

Ở đây bạn sẽ tạo được user admin.

Vậy là xong, bạn đã cài được php-NUKE trên localhost.

Post NUKE cũng làm tương tự như trên. Tuy nhiên, PostNuke bản mới nhất (7.1) có một lỗi không login được, sau khi cài xong bạn sửa lỗi này như sau:

- Mở tệp tin: html/includes/pnSession.php

- tìm dòng ini_set('session.referer_check', "$domain$path"); đổi thành: //ini_set('session.referer_check', "$domain$path"); hoặc sửa thành: ini_set('session.referer_check', "");

(Cảm ơn moi_hong_dao đã chỉ cho cách sửa này)

Nếu gặp lỗi, bạn có thể vào đây để tìm cách sửa lỗi và update cho php-NUKE : Nuke Support và Nuke Forums

Chúc may mắn.

Phương Pháp Chống SQL injection for ASP

(bài viết của Baby Arthas@gamevn.com) 1. SQL Injection là gì?

Việc thiết kế và đưa vào hoạt động một website luôn đòi hỏi các nhà phát triển phải quan tâm đến các vấn đề về an toàn, bảo mật nhằm giảm thiểu tối đa khả năng bị tấn công từ các tin tặc. Tuy nhiên, thông thường các nhà phát triển đa số tập trung vào các vấn đề an toàn trong việc chọn hệ điều hành, hệ quản trị CSDL,webserver sẽ chạy ứng dụng, ... Ví dụ, người ta thường quan tâm nhiều đến các lỗ hổng về an toàn trên IIS hơn là quan tâm đến các đoạn mã của ứng dụng có tiềm ẩn các lỗ hổng nghiêm trọng hay không. Một trong số các lỗ hổng này đó là SQL injection attack.

SQL injection là một kĩ thuật cho phép những kẻ tấn công thi hành các câu lệnh truy vấn SQL bất hợp pháp (không được người phát triển lường trước) bằng cách lợi dụng lỗ hổng trong việc kiểm tra dữ liệu nhập trong các ứng dụng web. Hậu quả của nó rất tai hại vì nó

cho phép những kẻ tấn công có thể thực hiện các thao tác xóa, hiệu chỉnh, … do có toàn quyền trên cơ sở dữ liệu của ứng dụng. Lỗi này thường xảy ra trên các ứng dụng web có dữ liệu được quản lí bằng các hệ quản trị CSDL như SQL Server, Oracle, DB2,Sysbase. Xét một ví dụ điển hình, thông thường để cho phép người dùng truy cập vào các trang web được bảo mật,hệ thống thường xây dựng trang đăng nhập để yêu cầu người dùng nhập thông tin về tên đăng nhập và mật khẩu. Sau khi người dùng nhập thông tin vào, hệ thống sẽ kiểm tra tên đăng nhập và mật khẩu có hợp lệ hay không để quyết định cho phép hay từ chối thực hiện tiếp.Trong trường hợp này, người ta có thể dùng 2 trang, một trang HTML để hiển thị form nhập liệu và một trang ASP dùng để xử lí thông tin nhập từ phía người dùng. Ví dụ:

Code: Login.htm

<form action="ExecLogin.asp" method="post">

Username: <input type="text" name="txtUsername"><br>

Password: <input type="password" name="txtPassword"><br> <input type="submit"> </form> ExecLogin.asp <% (adsbygoogle = window.adsbygoogle || []).push({});

Dim p_strUsername, p_strPassword, objRS, strSQL

p_strUsername = Request.Form("txtUsername")

p_strPassword = Request.Form("txtPassword")

strSQL = "SELECT * FROM tblUsers " & _

"WHERE Username='" & p_strUsername & _

Set objRS = Server.CreateObject("ADODB.Recordset")

objRS.Open strSQL, "DSN=..."

If (objRS.EOF) Then

Response.Write "Invalid login."

Else

Response.Write "You are logged in as " & objRS("Username")

End If

Set objRS = Nothing

%>

Thoạt nhìn, đoạn mã trong trang ExecLogin.asp dường như không chứa bất cứ một lỗ hổng về an toàn nào. Người dùng không thể đăng nhập mà không có tên đăng nhập và mật khẩu hợp lệ. Tuy nhiên, đoạn mã này thực sự không an toàn và là tiền đề cho một SQL injection attack. Đặc biệt, chỗ sơ hở nằm ở chỗ dữ liệu nhập vào từ người dùng được dùng để xây dựng trực tiếp câu lệnh truy vấn SQL. Chính điều này cho phép những kẻ tấn công có thể điều khiển câu truy vấn sẽ được thực hiện.

Ví dụ, nếu người dùng nhập chuỗi sau vào trong cả 2 ô nhập liệu username/password của trang Login.htm:‘ or ‘’ = ‘ . Lúc này, câu truy vấn sẽ được gọi thực hiện là:

Code:

SELECT * FROM tblUsers WHERE Username='' or ''='' and Password = '' or ''=''

Câu truy vấn này là hợp lệ và sẽ trả về tất cả các bản ghi của tblUsers và đoạn mã tiếp theo xử lí người dùng đăng nhập bất hợp pháp này như là người dùng đăng nhập hợp lệ. Một ví dụ khác của SQL injection attack nữa là khi các trang web sử dụng dữ liệu nhập

vào theo dạng querystring (bằng cách gõ cặp tham số và giá trị trực tiếp trên thanh địa chỉ hoặc dùng form với thuộc tính ACTION là GET). Ví dụ sau minh họa một trang ASP nhận dữ liệu cho biến ID thông qua querystring và phát sinh nội dung của trang đó dựa trên ID:

Code: <%

Dim p_lngID, objRS, strSQL

p_lngID = Request("ID")

strSQL = "SELECT * FROM tblArticles WHERE ID=" & p_lngID

Set objRS = Server.CreateObject("ADODB.Recordset")

objRS.Open strSQL, "DSN=..."

If (Not objRS.EOF) Then Response.Write objRS("ArticleContent")

Set objRS = Nothing

%> (adsbygoogle = window.adsbygoogle || []).push({});

Trong các tình huống thông thường, đoạn mã này hiển thị nội dung của article có ID trùng với ID được chuyển đến cho nó dưới dạng querystring. Ví dụ, trang này có thể được gọi như sau: http://www.example.com/Article.asp?ID=1055, để hiển thị nội dung của article có ID là 1055.

Giống như ví dụ đăng nhập ở trước, đoạn mã này để lộ sơ hở cho một SQL injection attack. Kẻ tấn công có thể thay thế một ID hợp lệ bằng cách gán ID cho một giá trị khác, để thực hiện một lệnh SQL bất hợp pháp, ví dụ như: 0 or 1=1 (nghĩa là,

http://www.example.com/Article.asp?ID=0 or 1=1).

Câu truy vấn SQL lúc này sẽ trả về tất cả các article từ bảng dữ liệu vì nó sẽ thực hiện câu lệnh:

Code:

Tất nhiên ví dụ này dường như không có gì nguy hiểm, nhưng hãy thử tưởng tượng kẻ tấn công có thể xóa toàn bộ CSDL bằng cách chèn vào các đoạn lệnh nguy hiểm như lệnh DELETE. Tất cả chỉ là đơn giản thay đổi chuỗi gán dữ liệu cho ID, ví dụ như:

Tất nhiên ví dụ này dường như không có gì nguy hiểm, nhưng hãy thử tưởng tượng kẻ tấn công có thể xóa toàn bộ CSDL bằng cách chèn vào các đoạn lệnh nguy hiểm như lệnh DELETE. Tất cả chỉ là đơn giản thay đổi chuỗi gán dữ liệu cho ID, ví dụ như:

Code:

http://www.example.com/Article.asp?ID=1055; DELETE FROM tblArticles

2. Các tác hại và cách phòng tránh

Tác hại từ SQL Injection attack tùy thuộc vào môi trường và cách cấu hình hệ thống. Nếu ứng dụng sử dụng quyền dbo (quyền của người sở hữu CSDL - owner) khi thao tác dữ liệu, nó có thể xóa toàn bộ các bảng dữ liệu, tạo các bảng dữ liệu mới, … Nếu ứng dụng sử dụng quyền sa (quyền quản trị hệ thống), nó có thể điều khiển toàn bộ hệ quản trị CSDL và với quyền hạn rộng lớn như vậy nó có thể tạo ra các tài khoản người dùng bất hợp pháp để điều khiển hệ thống của bạn.

Để phòng tránh các nguy cơ có thể xảy ra, hãy bảo vệ các câu truy vấn SQL là bằng cách kiểm soát chặt chẽ tất cả các dữ liệu nhập nhận được từ đối tượng Request (Request, Request.QueryString,Request.Form, Request.Cookies, and Request.ServerVariables). - Trong trường hợp dữ liệu nhập vào là chuỗi, như trong ví dụ 1, lỗi xuất phát từ việc có dấu nháy đơn trong dữ liệu. Để tránh điều này, thay thế các dấu nháy đơn bằng hàm Replace để thay thế bằng 2 dấu nháy đơn:

Code:

p_strUsername = Replace(Request.Form("txtUsername"), "'", "''")

p_strPassword = Replace(Request.Form("txtPassword"), "'", "''")

- Trong trường hợp dữ liệu nhập vào là số, như trong ví dụ 2, lỗi xuất phát từ việc thay thế một giá trị được tiên đoán là dữ liệu số bằng chuỗi chứa câu lệnh SQL bất hợp pháp. Để tránh điều này, đơn giản hãy kiểm tra dữ liệu có đúng kiểu hay không:

Code:

p_lngID = CLng(Request("ID"))

Như vậy, nếu người dùng truyền vào một chuỗi, hàm này sẽ trả về lỗi ngay lập tức. Ngoài ra để tránh các nguy cơ từ SQL Injection attack, nên chú ý loại bỏ bất kì thông tin kĩ thuật nào chứa trong thông điệp chuyển xuống cho người dùng khi ứng dụng có lỗi. Các thông báo lỗi thông thường tiết lộ các chi tiết kĩ thuật có thể cho phép kẻ tấn công biết được điểm yếu của hệ thống.

Cuối cùng, để giới hạn mức độ của SQL Injection attack, nên kiểm soát chặt chẽ và giới hạn quyền xử lí dữ liệu đến tài khoản người dùng mà ứng dụng web đang sử dụng. Các ứng dụng thông thường nên tránh dùng đến các quyền như dbo hay sa. Quyền càng bị hạn chế, thiệt hại càng ít.

Các tài liệu tham khảo

SQL Injection FAQ: http://www.sqlsecurity.com/DesktopDefault....index=2&tabid=3 Advanced SQL Injection : http://www.nextgenss.com/papers/adv...l_injection.pdf Preventing SQL Injection: http://www.owasp.org/asac/input_validation/sql.shtml Biên dịch từ: http://www.4guysfromrolla.com/webtech/061902-1.shtml

Một phần của tài liệu Quá trình xây dựng Website pdf (Trang 62 - 78)