Thứ Tư, 22 tháng 7, 2009

Zend paginator example!

Paginator component is available with Zend Framework v1.6. This component wasn’t available in v1.5. I appreciate Zend for provide such a nice component for pagination. This component, like other component, is so loosely coupled that you can use it wherever you want without worrying about any other component at all.
If you have already created pages and you want to apply pagination to them, it would not be a big deal.
Pagination is three step process.

1. you will need to create template file. In template file you can specify layout of your pagination. i.e. how your first, previous, next and last etc will be displayed.

2. instantiate your pagination class in the controller and pass data source- data source can be an array, values fetched form the database etc.

3. make some change in your template file, where you are showing your records.
Lets have a simple example.
First create a template file pagination.phtml in your “/application/view/script/” folder and place the following code

The code above is self explanatory. We are creating links for the pagination.

Next add the following code in your controller.
$sql = 'SELECT * FROM table_name ';
$result = $db->fetchAll($sql);
$page=$this->_getParam('page',1);
$paginator = Zend_Paginator::factory($result);
$paginator->setItemCountPerPage(10));
$paginator->setCurrentPageNumber($page);

$this->view->paginator=$paginator;

In the code above we first fetch records from our database. Then instantiate our paginator by writing
$paginator = Zend_Paginator::factory($result);

And pass it results we have fatched.
We then set number of items per page and current page. On our first visit $page will have value 1.
At the end we assign this paginator to our view template.
And now in view template add the following code
foreach($this->paginator as $record)
{
echo $record['firstname'].'\n';
echo $record['lastname']. '\n'
...
...
}

paginationControl($this->paginator, 'Sliding', 'pagination.phtml'); ?

We are applying foreach loop to our paginator and echo our records. I assume that you have fistname, lastname columns in your table where you are fetching records form.Last line is compulsory. you need to call the paginator contorller and give it the $paginator, style of the pagination and the file name of the pagination template.

copy from here
will "viet hoa" late.

Thứ Sáu, 10 tháng 7, 2009

PHP with PDO - Phần 3

Phần I: Tổng Quan về PDO
Phần II: Xây dựng một kết nối đơn giản và truy vấn tới CSDL
Phần III: Tương tác dữ liệu qua PDO

Nếu như các bạn làm theo những bước ở trên thì chưa đủ, ta phải tìm cách lấy dữ liệu trả về từ các query (VD như truy vấn Select chẳng hạn).

Để làm điều này, trước tiên chúng ta phải sử dụng một phương thức khác của PDO là PDO->query(). Phương thức này có nhiệm vụ thực thi một truy vấn SQL và trả về tập kết quả. Thường thì tập kết quả này sẽ được một lớp đối tượng khác là PDO Statement xử lý. Đây là tập các phương thức chuyên dụng để xử lý kết quả trả về, nó cũng gần giống như cái recordset vậy.

PDO {
PDOStatement query(string sql);
}

Các bạn cần chú ý phân biệt giữa hai phương thức exec() và query(). Exec() thực thi một truy vấn và trả về số các dòng bị ảnh hưởng bởi truy vấn, còn query() trả về một tập kết quả (thường là một recordset hoặc giá trị false). Người ta thường dùng exec() để truy vấn các câu lệnh như Insert, delete, update..., và dùng query() để truy vấn các câu lệnh Select.

Chúng ta có thể lấy kết quả ra theo hai cách: Lấy về từng dòng hay lấy về toàn bộ. Điểm đặc biệt là cũng như với các hàm xử lý MySQL, kết quả trả về thường được lưu trữ dưới dạng một mảng, rất thuận tiện và dễ dùng

I. Lấy kết quả về theo từng dòng

Để lấy kết quả theo từng dòng (tương tự như hàm mysql_fetch_array()), chúng ta có thể sử dụng phương thức PDOStatement->fetch().

PDOStatement {
mixed fetch(int fetch_style,
int cursor_orientation,
int cursor_offset);
}

Hàm này sử dụng 3 tham số tuỳ chọn:
- Fetch_style xác định cách thức lấy dữ liệu. Nó có thể nhận một trong các giá trị sau:
  • PDO::FETCH_ASSOC: Trả về một mảng được đánh chỉ số bởi tên cột (field) (Tương tự như MYSQL_ASSOC)
  • PDO::FETCH_BOTH (mặc định): trả về một mảng được đánh chỉ số bởi tên cột và chỉ số số nguyên bắt đầu từ 0. (tương tự như MYSQL_BOTH)
  • PDO::FETCH_NUM: trả về một mảng được đánh chỉ số bởi số thứ tự của cột (xuất hiện trên query SELECT), bắt đầu = 0 (Tương tự như MYSQL_NUM)

... và một vài giá trị khác, tham khảo thêm trong manual, nhưng vì chưa đến lúc sờ đến nên CMXQ không liệt kê ở đây.

Cũng tương tự như mysql_fetch_array, phương thức này lấy một dòng từ vị trí con trỏ hiện tại và đẩy con trỏ sang dòng kế tiếp.

Ví dụ:
Code:
$dbh = new PDO('mysql:host=localhost;dbname=thumotti', 'thumotti', 'thuhaiti');
$stmt = $dbh->query("SELECT * FROM user where user_id<10")>";
while (($row = $stmt->fetch(PDO::FETCH_ASSOC))) {
echo "${row['user_name']}${row['e-mail']}\n";
}
echo "";

II. Lấy toàn bộ dữ liệu và đưa vào mảng.

Để thực hiện điều này, chúng ta cần phải sử dụng một phương thức khác thay cho fetch, đó là fetchall(). Cách thức dùng cũng tương tư nặng thằng fetch, chỉ có điều nó đưa tất cả dữ liệu vào một mảng.

Ví dụ:

Code:
$dbh = new PDO('mysql:host=localhost;dbname=thumotti', 'thumotti', 'thuhaiti');
$stmt = $dbh->query("SELECT * FROM user where user_id<10") result="$stmt-">fetchAll();
print_r($result);
--------------------------------------------
copy from phpvietnam

PHP with PDO - phần 2

Phần I: Tổng quan về PDO
Phần II: Xây dựng một kết nối đơn giản và truy vấn tới CSDL



I. Thiết lập kết nối tới CSDL


Đầu tiên, chúng ta cần phải biết rằng PDO thuần tuý là một lớp (class) được dùng để thao tác với CSDL. Vì vậy, nó cũng có các phương thức và thuộc tính như bất kỳ một lớp nào được xây dựng trên PHP.

PDO sử dụng một phương thức mặc định là __construct(). Phương thức này kiêm luôn nhiệm vụ tạo kết nối tới CSDL. Phương thức này có các tham số như sau:
PDO {
PDO __construct(string dsn,
string username,
string password,
array driver_options);
}

Trong đó:
- dsn (Data Source Name) là một chuỗi văn bản chứa các thông tin cần thiết để kết nối tới một CSDL xác định.
- username và password: chứa tên truy cập và mật khẩu của một tài khoản có quyền thao tác trên CSDL đó.
- driver_options là các tham số tuỳ chọn bổ sung nếu cần.

DSN tuỳ thuộc vào loại CSDL. Ví dụ dưới đây là một chuỗi DSN kết nối tới CSDL MySQL:
'mysql:dbname=testdb;host=127.0.0.1';

Ví dụ:

= new PDO('mysql:host=localhost;dbname=thumotti', 'thumotti', 'thuhaiti');
?>



Đoạn mã trên tạo ra một biến $dbh (thể hiện của đối tượng PDO). Vì __construct là phương thức mặc định của PDO nên trong đoạn mã trên chúng ta không cần phải gọi tên phương thức này ra.

II. Huỷ kết nối tới CSDL
Để huỷ kết nối, đơn giản chúng ta chỉ việc gán instance của đối tượng đó với giá trị null.
VD:

Code:
= new PDO('mysql:host=localhost;dbname=thumotti', 'thumotti', 'thuhaiti');
$dbh=null
?>

III. Sử dụng PDO để truy vấn SQL

Ở trên, các bạn đã biết cách kết nối và huỷ kết nối tới CSDL. Bây giờ chúng ta sẽ tiến hành thực hiện một truy vấn SQL thông qua PDO.

Để thực hiện một truy vấn SQL, chúng ta sử dụng một phương thức của PDO là exec().

PDO {
int exec(string statement);
}


Trong đó, statement là một câu lệnh SQL. Chú ý rằng câu lệnh SQL này phải chạy được trên CSDL mà ta đang sử dụng, (do mỗi một hệ quản trị CSDL lại có một vài câu lệnh SQL đặc chủng nên ta cần phải chú ý điều này). Phương thức trên trả về kết quả là số "râu" (row - record hay bản ghi) bị ảnh hưởng bởi câu lệnh SQL

Ví dụ dưới đây sử dụng để xoá một vài bản ghi nào đó:

exec("DELETE FROM users WHERE user_id<100");>

PHP with PDO - Phần 1

Phần I: Tổng quan về PDO

Một trong những đồ chơi hoành tráng nhất trong phiên bản PHP 5 là sự ra đời của thư viện đối tượng PDO mở rộng, cho phép chúng ta thao tác với các CSDL khác nhau một cách nhẹ nhàng, đơn giản.

I. Giới thiệu

PDO là cụm từ viết tắt của PHP Data Objects, có nghĩa là Các đối tượng dữ liệu trong PHP . Đây là một thành phần mở rộng của PHP nhằm cung cấp cho chúng ta một cách thức đơn giản đề truy cập vào các CSDL khác nhau trong PHP.

Nếu như các bạn đã từng lập trình trên .Net, các bạn sẽ thấy một cái gọi là ADO (bản cũ) và ADO.Net, còn nếu các bạn đã từng code bằng Delphi, nó cũng có BDO, còn trên Java là JDBC... Về cơ bản thì mấy cái này giống nhau, mà bản chất là cung cấp một mô hình trừu tượng để truy cập tới CSDL. (Có thể coi nó như là một lớp (layer) trong lập trình đa lớp).

Cơ chế làm việc của những cái này có thể được mô hình hoá như sau:

Ứng dụng <----> PDO <---> Trình điều khiển các CSDL <---> Các truy vấn tới CSDL và kết quả trả về từ CSDL <---> CSDL (Access, MySQL, SQL Server, Oracle....).

Chúng ta có thể hình dung rằng mỗi một Hệ quản trị CSDL có một cách quản lý dữ liệu khác nhau. Vì vậy, để truy xuất vào một loại CSDL nào đó, cần phải khai báo trình điều khiển CSDL tương ứng với loại CSDL đó. Sau khi đã khai báo trình điều khiển, chúng ta có thể kết nối tới CSDL đó, tiến hành các truy vấn (có thể dựa trên ngôn ngữ truy vấn SQL, qua các Stored Procedure... mà CSDL đó hỗ trợ), lấy kết quả về rồi dùng các lệnh khác của PHP xử lý kết quả và hiển thị cho NSD.

II. Cài đặt

PDO chỉ xuất hiện trong PHP từ ver 5 trở đi.

Sau khi cài đặt xong, chúng ta phải mở cái php.ini và enable thư viện này (nếu chưa có) cùng các trình điều khiển tới các CSDL liên quan.

VD dưới đây là dòng lệnh cấu hình trình điều khiển CSDL chạy trên Windows:

extension=php_pdo.dll
extension=php_pdo_firebird.dll
extension=php_pdo_informix.dll
extension=php_pdo_mssql.dll
extension=php_pdo_mysql.dll
extension=php_pdo_oci.dll
extension=php_pdo_oci8.dll
extension=php_pdo_odbc.dll
extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll

---------------------------------------------------------------------------------------
copy from phpvietnam

Thứ Năm, 9 tháng 7, 2009

Thứ Ba, 7 tháng 7, 2009

Mysql - Reset password của root

Trên Windows:
vào Start -> Run -> gõ
Code:
services.msc
Enter
Tìm services MySQL và stop lại

sau đó tìm thư mục cài đặt mySQL giả sử C:\mySQL
Vào Start-> Run -> gõ
Code:
cmd
Enter.
ta vào thư mục bin
Code:
cd C:\mysql\bin
và gõ lệnh
Code:
C:\mySQL\bin\>mysqld-nt --skip-grant-tables
Giữ nguyên cửa số đó và mở thêm 1 cửa sổ command mới
vào bin và gõ lệnh
Code:
C:\mySQL\bin\>mysql -u root
khi đó sẽ login vào root mà không cần password.
Để Reset password root ta dùng lệnh
Code:
mysql>use mysql; update user set Password=PASSWORD('new_pass') WHERE User='root';FLUSH PRIVILEGES;
trong đó new_pass chính là password của bạn.

Trên Linux:
Trường hợp cài đặt bằng gói RPM:
1. Gain root access to your Linux system - Lên quyền root:
Code:
[user@localhost ~]$ su -
Password:
[root@localhost user]#
2. First you have to stop the daemon - Dừng ngay mysql lại

Code:
[root@localhost root]# /etc/init.d/mysqld stop
[root@localhost root]#
3. Nếu sử dụng RedHat, CentOS... thì dùng
Code:
[root@localhost root]# mysqld_safe --skip-grant-tables --skip-networking
[root@localhost root]#
Nếu dùng OS khác (ubutun...) thì thay thế services mysqld_safe thành safe_mysqld
You will now start MySQL in safe mode without reading the grant tables with all MySQL database passwords and also you will disable networking. The "safe_mysqld" command will do this trick for you. Chạy mysql trong safe_mode mà không cần đăng nhập và bạn cũng sẽ disable networking cho mysql luôn - đề phòng thằng nào nhân cơ hội này nó vào ).

4. The "mysqladmin" command will now reset[rewrite] the root password. In this case we are setting it to "newpassword". sử dụng mysqladmin sẽ reset lại password. Trong trường hợp này ta phải sử dụng lệnh sau để set 1 pass mới.

Code:
[root@localhost root]# mysqladmin -u root flush-privileges password "newpassword"
[root@localhost root]#
5. Stop the running daemon - Dừng chạy cái mysql_safe:

Code:
kill `cat /var/run/mysqld/mysqld.pid`
6. And finally restart it - và cuối cùng khởi động lại:

Code:
[root@localhost root]# /etc/init.d/mysqld start
[root@localhost root]#
7. You can use now your new root password - Bây giờ thì xài pass mới xem:
Code:
[root@localhost root]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 4.0.20-standard

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>
Xong.

Trường hợp cài = source:
Tìm thư mục cài đặt Mysql và tìm thư mục libexec bên trong nó. Bạn chạy lệnh :
Code:
[root@localhosthost libexec]./mysqld stop
[root@localhosthost libexec]./mysqld --skip-grant-tables --user=root
sau đó có thể tiến hành đăng nhập không cần password và reset password như trên windows

copy from http://hackingart.com/

Thứ Năm, 9 tháng 4, 2009

Chứng chỉ số.

Sơ lược về chứng chỉ số
    Trong việc sử dụng mã hóa hay ký số, chỉ có thể giải quyết được vấn đề đảm bảo bảo mật và xác thực thông điệp, không chứng minh được chủ thể trao đổi là đối tác thật hay giả mạo. Chứng chỉ số cung cấp phương pháp để chứng minh danh tính của một thực thể.Chứng chỉ số là một tệp tin điện tử dùng để nhận diện một cá nhân, một máy dịch vụ hay một thực thể nào đó. Nó gắn định danh của đối tượng đó với một khóa công khai.Cơ quan chứng nhận các thông tin của một thực thể được gọi là cơ quan xác thực chứng chỉ (Certificate Authority – CA). Đó là một đơn vị có uy tín và thẩm quyền nhận định danh và cấp chứng chỉ số. CA có thể là một đơn vị đối tác thứ 3 độc lập hoặc là tổ chức tự vận hành một hệ thống cấp chứng chỉ trong nội bộ.Chứng chỉ số chứa khóa công khai, được gắn với một tên duy nhất của một đối tượng, giúp ngăn chặn việc giả mạo khóa công khai của đối tượng.Chứng chỉ số cũng chứa các thông tin về đối tượng tên nhận diện, hạn dùng, tên CA, mã số….v.v… Quan trọng nhất là chứng chỉ số chứa chữ ký của CA, để xác nhận khóa công khai trên chứng chỉ là của thực thể có tên trong chứng chỉ, nhờ đó người sử dụng khóa công khai có thể tin tưởng rằng đó là khóa công khai của chính xác đối tượng mà họ đang giao dịch.
Lợi ích của chứng chỉ số
  • Đảm bảo tính xác thực: Xác thực đối tượng mà người sử dụng đang giao dịch, đôi khi là một bên hoặc đôi khi là xác thực ở cả 2 bên.
  • Mã hóa: Trên chứng chỉ số có chứa khóa công khai của đối tượng sở hữu chứng chỉ số đó, và việc truyền tin giữa người gửi và người nhận sẽ được mã hóa bằng khóa công khai có trên chứng chỉ đó. Nhờ vậy thông tin được đảm bảo an toàn, chỉ người có khóa bí mật tương ứng với khóa công khai trên chứng chỉ mới có thể giải mã thông điệp đã được mã hóa.
  • Chống giả mạo: Do chứng chỉ có lưu thông tin của người sở hữu nó, việc giả mạo bất kỳ thông tin nào của người sở hữu chứng chỉ sẽ ngay lập tức bị phát hiện.
  • Chống chối cãi nguồn gốc: Người sở hữu chứng chỉ số phải chịu trách nhiệm với những thông tin mà chứng chỉ số đi kèm. Việc phủ nhận thông tin gửi kèm chứng chỉ sẽ là khó thể vì chứng chỉ số mà người nhận có được sẽ là bằng chứng để khẳng định người gửi là tác giả của thông tin.
  • Đảm bảo phần mềm: Chứng chỉ số cũng cho phép ký trên các phần mềm, nhờ đó có thể đảm bảo tính hợp pháp cũng như nguồn gốc xuất xứ của sản phẩm, qua đó người sử dụng có thể xác thực được nhà cung cấp và phát hiện được sự thay đổi chương trình (do hỏng, hoặc virus…).
  • Phân phối khóa an toàn: Chứng chỉ số xác thực cho mỗi cặp khóa công khai bí mật tương ứng cho mỗi đối tượng thông qua chữ ký của nhà phát hành chứng chỉ. Nhờ đó các chứng chỉ có thể lưu tại các vị trí không được bảo vệ hoặc lưu truyền trên mạng công khai mà vẫn đảm bảo được tính an toàn của khóa công khai.
  • Bảo mật website: Với việc sử dụng chứng chỉ SSL Server cho phép thiết lập cấu hình website theo giao thức bảo mật SSL (Secure Socket Layer). Chứng chỉ này đảm bảo tính hợp pháp của website đồng thời cho phép trao đổi thông tin an toàn giữa website và khách hàng thông qua việc mã hóa dữ liệu bằng công nghệ SSL.
  • Xử lý độc lập tại máy khách: Chứng chỉ số cho phép việc thực hiện các xử lý tại máy khách nhờ các thông tin lưu trên nó, nhờ đó sẽ giảm được 1 khối lượng xử lý đáng kể cho các hệ thống trung tâm.
  • …….v...v

Thứ Ba, 10 tháng 3, 2009

PKI - Hạ Tầng mã hóa khóa công khai

1. Khái niệm hạ tầng khóa công khai (PKI):

* Khái niệm hạ tầng khóa công khai (PKI) thường được dùng để chỉ toàn bộ hệ thống bao gồm nhà cung cấp chứng thực số (CA) cùng các cơ chế liên quan đồng thời với tòan bộ việc sử dụng các thuật toán mã hóa khóa công khai trong trao đổi thông tin.
* Mục tiêu chính của PKI là cung cấp khóa công khai và xác định mối liên hệ giữa khóa và định dạng người dùng

2.Các thành phần trong PKI?

* Phần mềm máy khách (client).
* Phần mềm máy chủ (server).
* Phần cứng (ví dụ như thẻ thông minh).
* Các qui trình hoạt động liên quan.

3. Hoạt động của PKI:

PKI dựa trên cách sử dụng chìa khóa mật mã công cộng và chữ kí điện tử. PKI chính là bộ khung của các chính sách, dịch vụ và phần mềm mã hóa, đáp ứng nhu cầu của người sử dụng khi gửi những thông tin quan trọng qua Internet và các mạng khác:

* Các tổ chức cấp giấy chứng nhận trên PKI là tổ chức thứ 3 đáng tin cậy chịu trách nhiệm phát hành giấy chứng nhận kĩ thuật số và quản lý chúng trong thời gian có hiệu lực.
* Các phần mềm trên PKI cung cấp cho mỗi người sử dụng trong hệ thống 1 cặp khóa công khai/khóa bí mật
* Khóa công khai dùng để cung cấp cho đối tác để họ mã hóa tài liệu trước khi gửi đến cho người dùng, khóa bí mật dùng để giải mã tài liệu đó. Khóa công khai có thể cho nhiều người biết, khóa bí mật chỉ mình người dùng được biết và không san sẻ với người khác.

4. Yêu cầu đối với một hệ thống PKI:

* Đảm bảo thông tin lưu chuyển trên internet toàn vẹn và cho cảm giác tin cậy giống như khi giao dịch trên giấy tờ.
* An toàn và chống xem trộm, những người tham gia giao dịch phải là người được yêu cầu và không ai có thể phủ nhận hành vi liên quan của mình trong giao dịch khi có sự cố xảy ra.

5. Ưu điểm của PKI:

* Cho phép các giao dịch điện tử được diễn ra đảm bảo tính bí mật, tòan vẹn và xác thực lẫn nhau mà không cần phải trao đổi các thông tin mật từ trước.

6. Một số ứng dụng:

* Mã hóa email hoặc xác thực người gửi email
* Mã hóa hoặc nhận thực văn bản.
* Xác thực người dùng ứng dụng.
* Các giao thức truyền thông an tòan.
* ...

7. Thực trạng:

Thị trường PKI đã thực sự tồn tại và phát triển nhưng không phải có qui mô và kỳ vọng như ban đầu, PKI chưa giải quyết được một số vấn đề như:

* Các luật và quy định đã được thông qua không thống nhất trên thế.
* Kỹ thuật và vận hành còn nhiều khó khăn. Các kỹ thuật mật mã cũng như các quy trình/giao thức rất khó được thực hiện chính xác và các tiêu chuẩn hiện tại chưa đáp ứng được các yêu cầu đề ra.

Get root

Linux cho phép đăng nhập vào hệ thống mà không cần mật khẩu khẩu root, grub một cách dễ dàng từ chế độ cứu hộ bằng cách boot from cd.
Sau đây là những thao tác cần thiết:
I." Tiền xử lý"
1. đặt đĩa cài redhat vào ổ cd.
2. chọn chế độ boot from cd.
II. Xử lý.
Các file lưu thông tin về mật khẩu người dùng, mật khẩu grub cần lưu ý là:
/etc/shadow
/etc/grub.conf
Sau khi thiết lập chế độ boot từ CD, khởi động lại máy chờ vài giây, tại màn hình boot, gõ lệnh
CODE
linux rescue

Chọn OK để thiết lập các mặc định. (hoặc có thể thay đổi nếu muốn ).
Sau khi thiết lập, tại màn hình shell mới hiện ra:
Chuyển các mout point từ /mnt/sysimage về /root để tiện bề thao tác bằng lệnh:
#chroot /mnt/sysimage

Hoặc có thể vào trực tiếp /mnt/sysimage để chỉnh sửa cũng không vấn đề gì.
Nếu không thực hiện lệnh trên, cần di chuyển tới thư mục /mnt/sysimage để thao tác bằng lệnh sau:

# cd /mnt/sysimage

Bắt đầu đột kích nào
Trước hết là mở file /etc/grub.conf:
# vi /etc/grub.conf
Lưu ý: ở đây sử dụng lệnh vi để chỉnh sửa file, nhưng không nhất thiết phải dùng vi, có thể dùng cat hoặc bất kì trình soạn thảo nào đó tùy thích.
Nhấn Insert để tương tác với văn bản.
Đặt thêm 1 cái dấu # đằng trước dòng password –md5 …… (mục đích là chuyển nó thành 1 comment và để sau khi đăng nhập hệ thống, làm abcxyz gì đó, ta có thể trả lại nguyên mật khẩu grub như ban đầu rồi gõ :wq để lưu và thoát.
Tiếp theo là sửa file /etc/shadow
Đặt quyền đọc, ghi, thực thi cho root với file /etc/shadow:
#chmod +rwx /etc/shadow
Mở file shadow để chỉnh sửa:
CODE
# vi /etc/shadow

i hoặc ấn phím Insert để có thể tương tác với văn bản.
Tại dòng tương ứng với root, ta nhét thêm dấu # vào phía trước nó (để chuyển nó thành comment)
CODE
#root:abx@$AdAVJBjda0d/:13522:0:9999:7:::

Xâu abx@$AdAVJBjda0d/ở trên chính là password đã được mã hóa của root.
Ta gõ lại 1 dòng gần giống dòng trên nhưng bỏ dòng tương ứng với password đi:
CODE
root:::13522:0:9999:7:::

(lưu ý là ngòai việc bỏ dòng password, các dữ liệu khác không được thay đổi, phải giống hệt file ban đầu)
Ok, giờ thực hiện thêm mấy bước ngăn ngắn nữa thôi:
Gõ exit 2 lần để thoát khỏi chế độ cứu hộ.
Khởi động lại hệ thống, chọn lại chế độ booot từ ổ cứng.
Tại màn hình đăng nhập, gõ root, hệ thống sẽ được chuyển ngay vào màn hình root mà không hỏi password nữa.
Vậy là ta đã có quyền root với hệ thống và có thể nghịch ngợm rồi đó. 16.gif
Cuối cùng, trước khi thoát khỏi hệ thống cần trả lại pass cho grub và root bằng mấy thao tác này nữa:
Vào file /etc/shadow, bỏ dấu # trước root đi, và xóa dòng tương ứng với root mà lúc trước ta nhập vào, lưu file, và thoát.
Mở file /etc/grub.conf , bỏ dấu # trước dòng password –md5….. lưu file và thoát.
Gõ init 0 để tắt máy. Lúc này hệ thống lại được khôi phục lại mật khẩu grub và mật khẩu root như cũ. 4.gif
Bài viết của em đến đây là hết. Rất mong nhận được sự góp ý của bà con cô bác. wub.gif

SSL

1. SSL là gì?
Là một giao thức cho phép truyền dữ liệu an toàn trên mạng công khai. Dữ liệu được mã hóa trước khi đưa ra mạng công khai và lưu chuyển trong môi trường không an toàn.
SSL - Secure Socket Layer.
SSL được xem như là một "tầng ảo" trong mô hình TCP/IP, nó nằm dưới tầng Ứng dụng (Application) và trên tầng Mạng (Network).
2. Các tầng giao thức trong giao thức SSL
Gồm 2 giao thức.
- Giao thức bắt tay
- Giao thức bản ghi
2.1 Giao thức bắt tay
gồm các giao thức con
- giao thức bắt tay (handshake protocol)
- giao thức trao đổi thuật toán mã hóa (change cipher protocol)
- giao thức cảnh báo (Alert protocol)
Giao thức bắt tay chịu trách nhiệm thực hiện các thiết lập ban đầu cho việc chuyển dữ liệu sau đó giữa 2 thiết bị đầu cuối, thiết lập gồm có:
- Phiên bản SSL/TLS sử dụng.
- Session ID.
- Chứng chỉ, thuật toán mã hóa công khai sử dụng trong giao thức bắt tay.
- Khóa chính - dùng cho việc mã hóa dữ liệu sau này.
- Thuật toán mã hóa đối xứng, dùng cho việc truyền dữ liệu.
-...v..v
Khi có bất kỳ vấn đề gì xảy ra thì giao thức con cảnh báo sẽ đưa ra một thông báo lỗi, và tùy theo mức độ của lỗi, có thể bỏ qua hoặc ngắt kết nối.
Giao thức con trao đổi mã hóa sẽ chịu trách nhiệm các thông số cần thiết cho việc mã hóa dữ liệu
2.2 Giao thức bản ghi
Là giao thức chịu trách nhiệm với phần lớn dữ liệu được truyền. Giao thức này sử dụng các thông số về session ID, thuật toán mã hóa, khóa chính... để tiến hành mã hóa dữ liệu chính của phiên giao dịch.
Tầng giao thức bản ghi sử dụng thuật toán mã hóa khóa đối xứng.

X.509

Là một chuẩn chứng chỉ điện tử được sử dụng phổ biến hiện nay trên mạng công khai.
Hiện có chứng chỉ EV là một dạng cụ thể của X.509 với nhiều phần mở rộng cho phép xác định chính xác hơn về chủ thể sở hữu chứng chỉ.