Professional Documents
Culture Documents
Trong trường hợp bạn vừa nâng cấp lên Joomla 1.5.12, có thể phần "Mail Settings"
không xuất hiện đúng như trên thì bạn chỉ cần chỉnh sửa một thông số bất kỳ nào đó, sau
đó nhấn nút [Save] để Joomla! nhận các thông số mới.
Keyword:
• joomla, mail, email, gmail, smtp, ssl, tls, global, configuration, server, username,
password, host
• cấu hình, gửi, nhận, thư
VD bạn thiết lập như hình bên, bạn sẽ có kết quả như dưới đây:
Lưu ý:
Để quản lý các bài viết của trang FrontPage bạn mở menu "Content" --> "Front Page
Manager"
Để có trang Homepage giống như VnExpress (các bài viết được trình bày lần lượt theo
các chủ đề) bạn cần tìm và cài đặt một component chẳng hạn như: D4Ezine, iJoomla...
|Section|
--------|Category|
-----------------|Content 1|
-----------------|Content 2|
Do vậy để tạo một bài viết chúng ta cần thực hiện tối đa là 3 bước.
Chú ý:
• Khi tạo Website nên định hình và tạo ngay các phần/mục (Section) và các chuyên
mục (Category) tương ứng.
• Joomla! chỉ hỗ trợ phân cấp thành 2 mức như trên. Do vậy nếu muốn chia thành
nhiều mức hơn bạn cần tìm một component hỗ trợ từ site:
http://extensions.joomla.org
Keyword: bài viết, chuyên mục, content, section, category
Hình 01: Trình upload ảnh mặc định của Joomla không hoạt động khi cài Flash 10
Hình 02: Sử dụng trình upload ảnh đơn giản (upload từng file một)
Lỗi này cũng ảnh hưởng tới tất cả các trình upload ảnh/video/flash có sử dụng công nghệ
Flash chứ không riêng gì Joomla.
Keyword:
• joomla, upload, flash, 10, media, media settings
• trình upload, ảnh, không hoạt động, vô hiệu hóa, cửa sổ, lỗi
5. Lỗi "session.save_path"
Biến session.save_path được dùng để làm gì?
Trên các Webserver chạy PHP, thông tin về phiên làm việc hiện tại của người sử dụng
thường được lưu vào các file khác nhau và đặt vào một thư mục nào đó. Chẳng hạn:
[Session]
; Handler used to store/retrieve data.
session.save_handler = files
• Biến "session.save_path" chưa được thiết lập, nghĩa là có giá trị là "None" hoặc
"Not Set"
• Biến "session.save_path" đã được thiết lập là đường dẫn tới một thư mục nào đó,
nhưng bạn lại không có quyền ghi đối với thư mục này - "Unwriteable"
Cách xử lý lỗi
Bước 1: Xác định giá trị hiện tại của biến "session.save_path"
<?php
echo (($sp=ini_get('session.save_path')) ?$sp:( 'none' ) );
?>
Sau đó mở link tới file này. VD: http://vinaora.com/joomla/session.php. Thông tin hiển
thị trên màn hình chính là đường dẫn tới thư mục chứa session của Webserver.
Bước 2: Thiết lập lại giá trị biến "session.save_path"
Đầu tiên tạo một thư mục (hoặc chọn một thư mục) mà bạn có quyền ghi lên nó. Thiết lập
Writeable (nếu là Host Windows) hoặc CHMOD 777 (nếu là Host Linux) cho thư mục
này.
Tạo một file ".htaccess" ở thư mục gốc chứa Joomla của bạn với nội dung sau:
Không phải HOSTING nào cũng cho phép bạn thiết lập lại biến "session.save_path"
bằng file ".htaccess". Trong trường hợp này bạn cần liên hệ trực tiếp với HOSTING và
đề nghị họ thiết lập lại giúp bạn.
Hoặc tạo một file "php.ini" ở thư mục gốc chứa Joomla của bạn với nội dung sau:
session.save_path = "/duong/dan/session/moi"
Nếu bạn đang làm trên LOCALHOST thì chỉ cần mở file php.ini và chỉnh sửa trực tiếp,
sau đó khởi động lại Webserver.
Bạn cũng cần lưu ý: Không phải HOSTING nào cũng cho phép bạn thiết lập lại biến
"session.save_path" bằng file "php.ini". Hoặc bạn phải copy file này tới mọi thư mục.
Trong trường hợp này bạn cần liên hệ trực tiếp với HOSTING và đề nghị họ thiết lập lại
giúp bạn.
<?php
ini_set('session.save_path','/duong/dan/session/moi');
?>
Lưu ý chung:
Thay "/duong/dan/session/moi" bằng đường dẫn phù hợp với Host của bạn, chẳng hạn
"D:\www\vinaora.com\tmp"; "/home/vinaora/public_html/tmp",
"/var/www/vinaora.com/public_html/tmp"...
Keyword:
• session, save, path, session.save_path, php, php.ini, htaccess, hosting, localhost,
webserver
• lỗi, biến, biến session, thiết lập, đường dẫn
Để khắc phục lỗi này chúng ta cần tăng giá trị giới hạn bộ nhớ PHP.
Giá trị giới hạn bộ nhớ của PHP mặc định là 8M = 8388608 bytes, do đó có thể thay đổi
giá trị này bằng 32M chẳng hạn (bạn hoàn toàn có thể thiết lập nhiều hơn tùy theo dung
lượng RAM hiện có của server)
Lưu ý: Không phải HOSTING nào cũng cho phép bạn thiết lập lại biến
"session.save_path" bằng file ".htaccess". Trong trường hợp này bạn cần liên hệ trực
tiếp với HOSTING và đề nghị họ thiết lập lại giúp bạn.
memory_limit = 32M
Nếu bạn đang làm trên LOCALHOST thì chỉ cần mở file php.ini và chỉnh sửa trực tiếp,
sau đó khởi động lại Webserver.
Lưu ý: Không phải HOSTING nào cũng cho phép bạn thiết lập lại biến
"session.save_path" bằng file "php.ini". Hoặc bạn phải copy file này tới mọi thư mục.
Trong trường hợp này bạn cần liên hệ trực tiếp với HOSTING và đề nghị họ thiết lập lại
giúp bạn.
• Giải nén gói thành phần mở rộng mà bạn cần cài đặt
• Upload lên một thư mục nào đó trên Server.
• Khi cài đặt, chọn cài đặt từ một thư mục chứa thành phần mở rộng (tùy chọn 2)
• Nhấn nút cài đặt
Keyword:
• 8388608, memory, memory_limit, size, fatal, error, bytes
• lỗi, bộ nhớ, giới hạn
7. Lỗi đăng nhập vào Joomla có thể do những nguyên nhân nào?
Một số nguyên nhân
4. Do trình duyệt
• Thử trên các máy khác nhau để kiểm tra xem có phải chỉ mình máy bạn là không
vào được.
• Xóa tất cả cache và cookie của trình duyệt.
• Sử dụng trình duyệt ở chế độ mặc định. Nên tải FireFox 2.0 và chọn cài mới để
thử.
8. Do biến session.save_path
• Sẽ chỉ cụ thể sau: http://joomlaportal.ru/content/view/156/53/
439581667ef694b60d58f213cccf9503
Đăng nhập lại hệ thống bằng tài khoản: username: admin, password: vinaora
Tham khảo:
• http://www.joomlaviet.org/forum/index.php?topic=955.0
• http://www.joomlaviet.org/forum/index.php?topic=1039.0
• http://forum.joomla.org/index.php/topic,7452.0.html
Mẹo Joomla!
8. Lỗi mất định dạng trong phần "Description" của Docman
Lỗi mất định dạng trong phần "Description" của DOCman xảy ra khi cài đặt phiên bản
Joomla 1.5.x và DOCman v1.4.0 RC3 - 2003-2008. Lỗi này khiến cho toàn bộ phần
"Description" mất các định dạng HTML như: In đậm, in nghiêng, màu chữ, font chữ, căn
chỉnh....
$this->objFormatData->dmdescription = mosHTML::cleanText($objDBDoc-
>dmdescription);
mosHTML::cleanText($objDBDoc->dmdescription);
Keyword:
• docman, joomla, description, HTML, 1.4.0 RC3, 1.5
• định dạng, mất định dạng
Tạo một file "info.php" nằm cùng mức với file "configuration.php" có nội dung như
sau:
<?php
$p = getcwd();
echo $p;
?>
hoặc
<?php
$p = dirname(__FILE__);
echo $p;
?>
hoặc
<?php
phpinfo();
?>
Trường hợp sử dụng hàm getcwd(), hoặc dirname(__FILE__) đường dẫn sẽ hiển thị
trên màn hình. Còn nếu sử dụng hàm phpinfo() thì tìm thông số SCRIPT_FILENAME
để biết đường dẫn tới file info.php nói trên.
Nếu:
SCRIPT_FILENAME = '/home/vinaora/httpdocs/info.php'
thì
Keyword:
• xác định, đường dẫn, tuyệt đối, absolute_path, mosConfig_absolute_path,
configuration.php
Thí dụ: Nếu muốn hiển thị vùng {mainbody} / {component} của website
community.joomla.org bạn chỉ cần thêm "?tmpl=component" vào phía cuối của đường
link để có link dạng như sau:
http://community.joomla.org/?tmpl=component.
Vùng {mainbody} / {component} là vùng (P) trong hình trên, nơi sẽ nạp component của
trang.
Trong trường hợp bạn lại không muốn mọi người xem được vùng {mainbody} /
{component} của Website bạn có thể sử dụng đoạn mã sau, đặt vào file .htaccess.
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} tmpl=
RewriteRule ^(.*)$ http://vinaora.com/index.php [F,L]
Chú ý: Thay http://vinaora.com bằng địa chỉ Website của bạn. Và nếu muốn chuyển
hướng về trang chủ thì thay [F,L] bằng [R,L] (F: Fobridden, R: Redirect, L: Last Rule)
Keyword:
• chỉ hiển thị, mainbody, component, tmpl, tmpl=component
<!--
<tr>
<td colspan="3">
<label for="ordering">
<?php echo JText::_( 'Ordering' );?>:
</label>
<?php echo $this->lists['ordering'];?>
</td>
</tr>
-->
Keyword:
• search, tìm kiếm, ordering
VD: http://joomla.org/?tp=1
Để cấm (vô hiệu hóa) tính năng trên bạn chỉ cần thêm các dòng sau vào file ".htaccess"
(được đặt ở thư mục chứa Joomla - cùng mức với file configuration.php)
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} tp=
RewriteRule ^(.*)$ http://vinaora.com/index.php [F,L]
Đây cũng là cách để chặn lọc và chuyển hướng các chuỗi không mong muốn.
• Bước 4: Tìm đến ~ dòng 87 và chèn thêm 10 dòng mã sau (dòng 88-97):
10 dòng mã cần chèn:
// Hacked by VINAORA.COM
$utf8characters = 'à|a, ả|a, ã|a, á|a, ạ|a, ă|a, ằ|a, ẳ|a, ẵ|a, ắ|a, ặ|
a, â|a, ầ|a, ẩ|a, ẫ|a, ấ|a, ậ|a, đ|d, è|e, ẻ|e, ẽ|e, é|e, ẹ|e, ê|e, ề|
e, ể|e, ễ|e, ế|e, ệ|e, ì|i, ỉ|i, ĩ|i, í|i, ị|i, ò|o, ỏ|o, õ|o, ó|o, ọ|
o, ô|o, ồ|o, ổ|o, ỗ|o, ố|o, ộ|o, ơ|o, ờ|o, ở|o, ỡ|o, ớ|o, ợ|o, ù|u, ủ|
u, ũ|u, ú|u, ụ|u, ư|u, ừ|u, ử|u, ữ|u, ứ|u, ự|u, ỳ|y, ỷ|y, ỹ|y, ý|y, ỵ|
y, À|A, Ả|A, Ã|A, Á|A, Ạ|A, Ă|A, Ằ|A, Ẳ|A, Ẵ|A, Ắ|A, Ặ|A, Â|A, Ầ|A, Ẩ|
A, Ẫ|A, Ấ|A, Ậ|A, Đ|D, È|E, Ẻ|E, Ẽ|E, É|E, Ẹ|E, Ê|E, Ề|E, Ể|E, Ễ|E, Ế|
E, Ệ|E, Ì|I, Ỉ|I, Ĩ|I, Í|I, Ị|I, Ò|O, Ỏ|O, Õ|O, Ó|O, Ọ|O, Ô|O, Ồ|O, Ổ|
O, Ỗ|O, Ố|O, Ộ|O, Ơ|O, Ờ|O, Ở|O, Ỡ|O, Ớ|O, Ợ|O, Ù|U, Ủ|U, Ũ|U, Ú|U, Ụ|
U, Ư|U, Ừ|U, Ử|U, Ữ|U, Ứ|U, Ự|U, Ỳ|Y, Ỷ|Y, Ỹ|Y, Ý|Y, Ỵ|Y, "|, &|';
$replacements = array();
$items = explode(',', $utf8characters);
foreach ($items as $item) {
@list($src, $dst) = explode('|', trim($item));
$replacements[trim($src)] = trim($dst);
}
$str = trim(strtr($str, $replacements));
// End Hack
Keyword:
• joomla, lỗi, tiếng Việt, ký tự, UTF-8, utf8
14. Thay đổi cách hiển thị tiêu đề bài viết trong Joomla
Tiêu đề của bài viết trong Joomla có thể ở các dạng sau:
• Dạng 1: Tên site - Tên bài viết (VD: VINAORA - Hướng dẫn cài đặt Joomla
1.5)
• Dạng 2: Tên bài viết - Tên site (VD: Hướng dẫn cài đặt Joomla 1.5 -
VINAORA)
• Dạng 3: Tên bài viết (VD: Hướng dẫn cài đặt Joomla 1.5)
Joomla 1.5
Tìm đến file [Joomla1.5]\libraries\joomla\document\html\renderer\head.php ~ dòng
61
Joomla 1.0.x
Tìm đến file [Joomla1.0]/includes/joomla.php ~ dòng 507
Keyword:
• Joomla, joomla 1.5, joomla 1.0, title, tiêu đề, bài viết, head
VD: http://vinaora.com/administrator
Để không phải gõ một cụm dài "administrator" phía sau domain, ta có thể tạo một
đường dẫn tắt chẳng hạn
Chú ý:
Nếu Website của bạn có dạng http://you-domain/joomla (VD: http://vinaora.com/joomla)
thì bạn cần gõ nội dung sau:
Redirect /joomla/123 http://your-domain/administrator
Cảnh báo:
Chỉ áp dụng cho Website chạy trên Apache và có hỗ trợ file .htaccess
17. Bỏ dòng "Tác giả" / "Ngày đăng" khỏi các bài viết
Bước 1: Đăng nhập vào trang quản trị (back-end)
VD: http://vinaora.com/administrator
Trong hộp thoại xuất hiện tìm đến mục "Author Name" (tên tác giả), "Created Date
and Time" (ngày giờ tạo bài viết), "Modified Date and Time" (ngày giờ chỉnh sửa bài
viết) và chọn "Hide" để ẩn, ngược lại chọn "Show".
• http://siteground.com
18. Tên template, đường dẫn, và Base URL trong
Joomla 1.5
Template trong Joomla! 1.5 thường được lưu trong thư mục "\templates" với cấu trúc
như sau:
\templates
----------\{tên_template}
------------------------\index.php File chính của
template
------------------------\templateDetails.xml Thông tin về
template
------------------------\template_thumbnail.png Ảnh chụp
template
------------------------\params.ini Các tham số hỗ trợ
------------------------\index.html Chống liệt kê thư
mục
------------------------\favicon.ico Biểu tượng nhỏ
hiện trong thanh Address
Base URL
VD:
• http://vinaora.com/joomla/index.php?tp=1
• http://joomla.org?tp=1
VD:
• http://joomla.org/?jos_change_template=rhuk_solarflare_ii
• http://joomla.org/?jos_change_template=madeyourweb
VD:
• http://demo.joomlaspan.com/demo15/?template=beez
• http://demo.joomlaspan.com/demo15/?template=rhuk_milkyway
• http://joomlademo15.com/?template=beez
• http://joomlademo15.com/?template=rhuk_milkyway
• Compress backup file?: Cho phép nén file để giảm dung lượng.
• Only structure: Chỉ backup cấu trúc của database. Nên chọn "No", không chọn
"Yes"
• Backup every x days: Backup theo chu kỳ x ngày.
• Backup time (00:00-23:59): Thời điểm backup trong ngày.
• Backup x times a day: Số lần backup 1 ngày.
• To Email address: Địa chỉ email để lưu file backup, sử dụng dấu phẩy "," để
phân cách giữa các email.
• Backup path: Đường dẫn để lưu file backup. Bạn cần điền đường dẫn ở dạng đầy
đủ. VD như: /home/vinaora.com/public_html/backup.
• Password for encryption: Mật khẩu để bảo vệ các file backup.
04:02: Cuối cùng trong mục "Enabled" chọn "Yes" để kích hoạt.
Keyword:
• joomla, lazybackup, lazy backup, backup, database, extensions, plugin
Nếu như bạn có một website đơn giản và mỗi ngày chỉ có
vài trăm khách viếng thăm thì bạn không cần quan tâm tới
bài viết này. Còn nếu bạn nhận thấy website của bạn luôn
nạp rất chậm khi có nhiều người truy cập thì bạn cần bật
tính năng "debug" của Joomla! và quan sát xem có bao
nhiêu truy vấn đã được thực thi. Trung bình từ 50 trở
xuống là ổn. Còn trong trường hợp có hàng trăm truy vấn
thì bạn cần phải chú ý tới tính năng cache của Joomla! và
tham số cache của các module.
Profile Information
16 queries logged
Khi Joomla cache mô-đun, sẽ chỉ mất một lần truy vấn khi trang chứa module đó được
nạp lần đầu. Còn khi có người thứ hai ghé thăm trang này, đơn giản là Joomla chỉ cần lôi
nó từ cache (một file nằm trong thư mục /cache của Joomla). Không phải thực hiện bất cứ
truy vấn nào nữa và do vậy giảm tải cho máy chủ và tăng hiệu suất thực thi. Truy vấn chỉ
được thực hiện lại sau khi cache hết hạn (theo mặc định của Joomla là 900s) - bạn có thể
thiết lập lại giá trị này trong mục Site >> Global Configuration
<params group="advanced">
<param name="cache" type="list" default="1" label="Caching"
description="Select whether to cache the content of this module">
<option value="1">Use global</option>
<option value="0">No caching</option>
</param>
<param name="cache_time" type="text" default="900"
label="Cache Time" description="The time before the module is recached"
/>
</params>
Thuật ngữ:
• Module (mô-đun) là một trong các thành phần mở rộng của Joomla thường được
dùng để hiện thị dữ liệu (VD: các tin bài mới nhất, các tin được xem nhiều nhất...)
• Cache / Caching: tính năng tạo bộ nhớ đệm trong Joomla! để giảm số truy vấn và
tăng tốc độ thực thi
• Debug: tính năng gỡ lỗi trong Joomla!
Keyword:
• joomla, module, cache, caching, debug
• tăng tốc, tốc độ, nhanh, chậm, truy vấn, tính năng, bộ nhớ đệm, gỡ lỗi
23. Những điều cần tránh khi tối ưu Joomla (Joomla SEO)
1. Sử dụng một danh sách các từ khóa trong tiêu đề
hoặc thẻ meta của bài viết
VD: Nếu bạn có một tiêu đề bài viết là "seo, sef, search engine, tối ưu, rank, joomla" thì
chắc chắn các máy tìm kiếm (search engine) sẽ coi đó là các từ khóa phân biệt và đánh
giá thấp bài viết của bạn.
Vì vậy thay vì cố tình spam các máy tìm kiếm, bạn hãy đặt một tiêu đề thật tự nhiên và
phản ánh chân thực bài viết của mình. Nếu thực sự cần đưa một số từ khóa vào tiêu đề,
bạn nên phân tách chúng bằng dấu gạch ngang "-". Ví dụ: "Tối ưu (seo-sef) cho Joomla"
Bạn có thể sử dụng file .htaccess để thực hiện công việc trên.
3. Không kiểm tra danh mục các bài viết mà các máy
tìm kiếm đã lập chỉ mục
Bạn nên thường xuyên kiểm tra xem các máy tìm kiếm Google, Yahoo, MSN... lập chỉ
mục Website của bạn ra sao để kịp thời phát hiện các link bị hư hỏng hay không mong
muốn.
Bạn có thể sử dụng dịch vụ "Google Analytics" để thống kê về hoạt động của website
24. Tăng tốc Joomla 1.0 - Cải thiện các truy vấn SQL
Joomla thường bị chỉ trích vì tạo quá nhiều truy vấn SQL tới cơ sở dữ liệu MySQL, đồng
thời Joomla cũng có cơ sở dữ liệu được thiết kế chưa thực sự tốt (cụ thể là việc lập chỉ
mục cho các bảng). Bài viết dưới đây sẽ hướng dẫn bạn thực hiện một vài chỉnh sửa nhỏ
với cơ sở dữ liệu Joomla. Bạn sẽ thấy tốc độ của Joomla được cải thiện đáng kể.
Lưu ý: Trước khi thực hiện mọi thay đổi hãy tiến hành backup toàn bộ website.
Tối ưu Template
Joomla có một hệ thống template cực kỳ phong phú và phần lớn trong số chúng đều trông
rất đẹp, tuy nhiên không phải template nào cũng tuân theo chuẩn và đạt yêu cầu về tốc
độ. Do vậy để tối ưu Template bạn cần chú ý một số vấn đề sau:
• Thiết kế Website theo chuẩn (HTML và CSS) để các trình duyệt có thể tính toán
nhanh chóng và hiển thị chính xác những gì bạn muốn hiển thị.
• Tránh sử dụng các ảnh có kích thước lớn hoặc sử dụng nhiều ảnh.
• Giảm kích thước của các file CSS, Javascript
Bật GZip
GZip là một tính năng cho phép nén các thông tin. Nó đặc biệt hữu dụng khi Joomla của
bạn được host trên Server có bộ xử lý mạnh.
26. Bật tính năng "cache" để tăng tốc cho Joomla 1.5!
Bước 1: Đăng nhập vào trang quản trị (back-end)
VD: http://vinaora.com/administrator
Tìm mục "Cache Settings" và chọn "Yes" rồi nhấn nút "Save" để lưu lại
Lưu ý
Khi bật tính năng "cache", mọi thay đổi sau này sẽ không trông thấy kết quả ngay lập tức
mà phải chờ sau khoảng thời gian "cache" (mặc định là 15').
Thông thường sau khi cài đặt Joomla! chúng ta dễ nhận thấy các
địa chỉ URL (các đường link) của Website đều rất dài và chứa
các tham số trông rất phức tạp. Để có thể đơn giản hóa các
đường link này, đặc biệt là việc biến các đường link này sao cho
chúng có thể chứa tiêu đề của bài viết liên quan giúp các máy tìm kiếm như Google ,
Yahoo dễ phát hiện ra chúng ta cần bật tính năng SEO/SEF của Joomla!
Trước khi bật tính năng SEO/SEF chúng ta có các địa chỉ URL dạng như sau:
http://vinaora.com/joomla/index.php?
option=com_content&task=view&id=5&Itemid=6
http://vinaora.com/joomla/index.php?Itemid=27&option=com_content
Sau khi bật tính năng SEO/SEF chúng ta có các địa chỉ URL tương ứng như sau:
http://vinaora.com/joomla/content/view/5/6
http://localhost/joomla/Toi-uu-Website-Joomla/27-Tao-link-than-thien-
SEO-SEF
Bây giờ, để bật tính năng SEO/SEF các bạn thực hiện từng bước như sau:
- Chuyển đến thư mục chứa Joomla bằng lệnh cd, VD:
cd C:/www/joomla
Nếu bạn đang làm trên localhost, thì mở file httpd.conf và tìm đến dòng:
Ngoài việc bật tính năng SEO/SEF trên chính Joomla chúng ta có thể sử dụng các phần
mềm của hãng thứ ba (3rd party) để có thể có được những đường link như ý muốn. VD
như: Artio JoomSEF, OpenSEF, Joomla SEF Patch, JoomSEO
• Guest (Khách): Là những người truy cập, sử dụng website nói chung, họ không
sở hữu tài khoản nào trên hệ thống Joomla!
• Registered (Thành viên): Là khách sau khi đăng ký vào của hệ thống Joomla! và
trở thành thành viên chính thức của hệ thống.
• Author (Tác giả): Là thành viên có quyền đăng bài hoặc đăng một vài thứ khác
mà hệ thống cho phép (chẳng hạn như weblink)
• Editor (Người biên soạn): Là thành viên có quyền đăng, kiểm duyệt và chỉnh sửa
tất cả các bài viết (thậm chí cả những bài viết không phải của họ)
• Publisher (Người xuất bản): Là người biên soạn, ngoài ra có thêm quyền quyết
định việc phát hành các bài viết (chính thức xuất bản lên Website hay không)
Lưu ý 1: Có thể thiết lập để mặc định tài khoản Khách (Guest) cũng là tài khoản Thành
viên (Registered).
Lưu ý 2: Bất cứ thành viên nào thuộc phần hậu sảnh (Back-End) cũng có thể thực hiện
các thao tác mà người xuất bản (Publisher) có thể làm.
• Manager (Người quản lý): Là tài khoản có quyền thực hiện các thao tác quản lý
cơ bản (quản lý menu, quản lý bài viết...).
• Administrator (Quản trị viên): Là tài khoản có quyền thực hiện mọi thao tác, trừ
việc quản lý thông tin cấu hình hệ thống, quản lý giao diện, quản lý ngôn ngữ,
quản lý các tài khoản siêu quản trị.
• Super Administrator (Siêu quản trị): Là tài khoản có đặc quyền cao nhất, có thể
thực hiện mọi hành động.
Thuật ngữ:
• Front-end (Frontend): Phần tiền sảnh hay phần mặt trước, phần mặt tiền phía
trang chủ mà ai cũng có thể trông thấy.
• Back-end (Backend): Phần hậu sảnh hay phần quản trị là vùng chỉ dành cho các
thành viên có quyền quản trị hệ thống Joomla!.
• ACL (Access Control List): Danh sách điều khiển truy cập (trong bài viết này sử
dụng khái niệm Phân quyền cho dễ hiểu).
Keyword:
• phân quyền, quản trị, khách, người đăng ký, tác giả, người biên soạn, người xuất
bản, quản lý, thành viên, đăng, kiểm duyệt, tiền sảnh, hậu sảnh, tài khoản, danh
sách điều khiển truy cập
• joomla, administrator, manager, publisher, editor, author, registered, guest, front-
end, back-end, acl, access control list
Chú ý: Ghi rõ nguồn VINAORA.COM khi sử dụng bài viết này.
29. Bảo mật cho trang quản trị Joomla! bằng cookie
Ý tưởng của giải pháp này là: Sử dụng chứng thực bằng cookie ngăn chặn mọi truy cập
trực tiếp tới vùng quản trị Joomla! bằng đường dẫn /administrator (VD:
http://vinaora.com/joomla/administrator). Thay vào đó phải truy cập gián tiếp thông qua
một đường dẫn chỉ mình bạn biết (chẳng hạn
http://vinaora.com/joomla/secret/vinaora.php).
Lưu ý: Bạn hoàn toàn có thể sử dụng một thư mục có sẵn (chẳng hạn thư mục /language)
Bước 3: Thêm nội dung sau tới file ".htaccess" của thư
mục /administrator
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/administrator
RewriteCond %{HTTP_COOKIE} !VinaoraAdminSession=abcdef123456
RewriteRule .* - [L,F]
Trong trường hợp HOSTING của bạn không hỗ trợ file .htaccess hãy liên hệ với bộ phận
kỹ thuật để được giúp đỡ.
Khi cần truy cập vào trang quản trị hãy gõ đường dẫn: http://yoursite/secret/vinaora.php
• VD: http://vinaora.com/secret/vinaora.php
Keyword:
• bảo mật, ngăn cấm, truy cập, trang quản trị, thư mục, trực tiếp, gián tiếp
• joomla, security, administrator, htaccess, cookie
Reference:
http://forum.joomla.org/
Thông thường chúng ta cần thiết lập CHMOD 755 cho các thư mục và CHMOD 644
cho các file.
CHMOD cùng lúc thay đổi quyền hạn trên các file/thư mục với các đối
tượng sau:
Lưu ý: Khái niệm CHMOD không tồn tại trên hệ thống Windows, mà chỉ có trên các hệ
thống Unix/Linux
• 7 = 4 + 2 + 1 : Người sở hữu thư mục có quyền đọc thư mục (read); chỉnh sửa thư
mục (write); liệt kê các thư mục và file bên trong (execute);
• 5 = 4 + 0 + 1 : Những người cùng nhóm chỉ có quyền đọc thư mục (read); liệt kê
các thư mục và file bên trong (execute)
• 5 = 4 + 0 + 1 : Những người còn lại chỉ có quyền đọc thư mục (read); liệt kê các
thư mục và file bên trong (execute)
CHMOD 755 (rwx r-x r-x) cho thư mục
• 6 = 4 + 2 + 0 : Người sở hữu thư mục có quyền đọc tệp (read); chỉnh sửa tệp
(write)
• 4 = 4 + 0 + 0 : Những người cùng nhóm chỉ có quyền đọc tệp (read)
• 4 = 4 + 0 + 0 : Những người còn lại chỉ có quyền đọc tệp (read)
CHMOD 644 (rw- r-- r--) cho file
CMOD 755 cho các thư mục, CHMOD 644 cho các file
bằng một file PHP
Tạo một file "chmod.php" nằm trong thư mục mà bạn cần CHMOD cho toàn bộ các file,
thư mục bên trong nó với nội dung như sau:
<?php
echo("\n\nComplete!");
?>
Sau đó thực thi các dòng lệnh trên bằng cách mở link tới file này. VD:
http://vinaora.com/joomla/chmod.php
CHMOD 755 cho các thư mục, CHMOD 644 cho các
file bằng dòng lệnh
Nếu bạn là người quản trị server hoặc có thể thực thi dòng lệnh thông qua SSH thì trước
tiên bạn cần chuyển đến thư mục Joomla bằng lệnh "cd" (change directory), sau đó bạn
có thể dùng các lệnh sau:
hoặc
hoặc
• Chọn"Recurse into subdirectories" để áp dụng thao tác CHMOD cho cả các thư
mục con
• Chọn "Apply to all files and directories" để áp dụng thao tác CHMOD cho tất cả
các file và thư mục
• Chọn "Apply to files only" để chỉ áp dụng thao tác CHMOD cho các file
• Chọn "Apply to directories only" để chỉ áp dụng thao tác CHMOD cho các thư
mục
CHMOD 755 (rwx r-x r-x) cho thư mục bằng FileZilla
CHMOD 755 (rwx r-x r-x) cho thư mục bằng "File Manager"
Keyword
• chmod, 755, 644, read, write, execute, PHP, FileManager, FileZilla
• đọc, ghi, chỉnh sửa, thực thi, dòng lệnh
Hiện Joomla! ngày càng phát triển mạnh mẽ và ngày càng được ứng dụng rộng rãi ở Việt
Nam với số lượng các thành phần mở rộng (extensions) từ các hãng thứ ba cũng tăng
không ngừng cả về số lượng và chất lượng. Rất nhiều thành phần mở rộng (gồm
component, module, plugin, template...) thực sự tuyệt vời và đáng được cài đặt trên mọi
Website.
Tuy nhiên, có một thực tế song hành với mặt ưu điểm trên là số lượng các Website bị tấn
công thông qua các lỗi lập trình bất cẩn trong các thành phần mở rộng được cài đặt thêm
cũng ngày càng tăng cao. Thậm chí số lượng lỗi bị khai thác còn cao hơn cả Microsoft
(theo báo cáo 6 tháng đầu năm 2008 của IBM).
Do vậy, ngay từ lúc này, bạn hãy kiểm tra lại toàn bộ hệ thống của mình để đảm bảo: Chỉ
cài đặt các thành phần mở rộng thực sự cần thiết, thực sự uy tín và hãy nhờ một người có
kinh nghiệm để kiểm tra các đoạn mã, mà một trong số chúng thường bị hacker khai thác
- các lỗi phổ biến về truy vấn SQL (thường gọi là SQL Injection).
Ép kiểu dữ liệu
Luôn ép kiểu dữ liệu cho các chuỗi đưa vào câu lệnh truy vấn SQL. Thí dụ:
Nếu muốn kiểu dữ liệu là kiểu nguyên (integer) thì sử dụng câu lệnh SQL:
Nếu muốn kiểu dữ liệu là kiểu ngày/tháng (date) thì sử dụng câu lệnh SQL:
Nếu muốn kiểu từ (word): chỉ có các ký tự chữ cái và ký tự gạch dưới "_", dùng câu lệnh:
Nếu muốn kiểu câu lệnh (command): chỉ có các ký tự chữ cái, ký tự số, ký tự "." và "_",
dùng câu lệnh:
Nếu muốn kiểu văn bản không phải HTML (văn bản đã được lọc bỏ các thẻ HTML),
dùng câu lệnh:
Keyword:
• câu lệnh, sql, sql injection, ép kiểu, lọc bỏ, số nguyên, số thực, DOS, XSS,
interger, float, string, JRequest...
Cũng giống như "Joomla Diagnostics", rất đơn giản bạn chỉ cần tải về công cụ có tên là
Joomla! HISA (Joomla! Health, Installation and Security Audit). Sau đó upload 1 file
duy nhất (joomla_hisa_en.php) lên Hosting định cài đặt Joomla và xem kết quả.
Phiên bản Joomla HISA hiện tại chỉ cho phép kiểm tra dòng Joomla! 1.0.x (từ Joomla
1.0.10 trở đi)
• Giải nén và upload Joomla! HISA: Giải nén, sau đó upload 1 file duy nhất
(joomla_hisa_en.php) lên thư mục chứa Joomla
VD: http://vinaora.com/joomla/joomla_hisa_en.php
Nếu một trong các thiết lập bị cảnh báo bằng màu đỏ thì bạn nên xem bài viết "Xử lý
cảnh báo trong quá trình cài đặt và cấu hình Joomla!" để biết cách khắc phục.
Directory and File Permissions: Quyền hạn đối với các tệp và thư
mục
Để tránh các HACKER nhòm ngó bạn nên thiết lập các thư mục với CHMOD = 755, các
tệp với CHMOD = 644
Chú ý:
Thứ nhất, nên đổi tên file joomla_hisa_en.php trước khi upload lên host (Chẳng hạn đổi
tên thành vinaora_hisa.php)
Thứ hai, sau khi sử dụng hãy xóa ngay file Joomla Hisa nói trên
Keyword:
• joomla, hisa, joomla hisa, kiểm tra, website, chmod
• Xác định rõ phiên bản Joomla mà bạn đang sử dụng: Joomla 1.0.13 hay Joomla
1.5
• Tìm đúng Joomla Diagnostics cho phiên bản mà bạn đang sử dụng
• Link download: Joomla Diagnostics
Giải nén Joomla Diagnostics mà bạn vừa download ở trên (gồm 2 file: diagnostics.php
và Joomla...txt) vào thư mục Joomla (nơi có file configuration.php)
• VD: http://vinaora.com/diagnostics.php
• VD: http://vinaora.com/joomla/diagnostics.php
Keyword:
• Joomla, joomla 1.0, joomla 1.5, diagnostics, joomla diagnostics, file
Bảo mật cho Website Joomla là một nhân tố quan trọng góp phần bảo vệ Website trước
các âm mưu tấn công có chủ đích cũng như vô tình, giúp cho Website luôn hoạt động ổn
định và bền vững. Nhiều quản trị Website chỉ đặt trọng tâm vào việc thiết kế, cập nhật
nội dung và giành thứ hạng cao trong các kết quả tìm kiếm mà quên đi việc đảm bảo an
toàn cho Website, tới khi sự việc xảy ra thì đã quá muộn. Bài viết dưới đây sẽ giới thiệu
tới các bạn 9 bước để bảo mật cho Website Joomla và giảm thiểu các nguy cơ tấn công
từ Internet.
Khuyến cáo: Hãy hạn chế tới mức tối đa việc cài đặt các thành phần mở rộng từ hãng thứ
ba. Ngoài ra khi bạn quyết định gỡ một thành phần mở rộng nào đó khỏi hệ thống thì bạn
cũng xóa cả các bảng cơ sở dữ liệu liên quan.
Lưu ý: Nếu quá trình cài đặt các thành phần mở rộng (component/module/language...)
gặp trục trặc bạn cần chuyển các thư mục sau sang CHMOD 777. Khi cài đặt xong lại
thiết lập như trên (755 đối với thư mục và 644 đối với file)
components
language
modules
mambots
templates
administrator
administrator/backups
administrator/components
administrator/modules
define('RG_EMULATION', 0)
9. Register Globals
Đảm bảo rằng Register Globals được thiết lập thành OFF. Nếu không hãy liên hệ với
Server của bạn để đổi nó thành OFF hoặc mở tệp .htaccess và thêm vào đoạn mã sau
Giả sử Website Joomla của bạn được đặt trong thư mục "/www/public_html"
www
---|public_html
--------------|configuration.php
• Chuyển file "configuration.php" ra khỏi "public_html", đặt nó vào một khu vực
khác do bạn tự tạo chẳng hạn "/www/private". Đặt cho nó một cái tên mới, chẳng
hạn "vinaora_joomla.conf".
www
---|private
-----------|vinaora_joomla.conf
• Tạo một file "configuration.php" thay thế file cũ nhưng chứa nội dụng sau:
<?php
require( '/www/private/vinaora_joomla.conf' );
?>
• Đừng để bất cứ khoảng trắng hoặc dòng trắng nào phía trước thẻ "<?php" và phía
sau thẻ "?>" và không được lưu nó với UTF-8 nếu không bạn sẽ nhận được thông
báo lỗi, đại loại như:
Warning: Cannot modify header information - headers already sent by (output started
at /home/xxxxx/public_html/configuration.php:2) in /home/xxxxx/public_html/index.php
on line 250
• Thiết lập (CHMOD) quyền chỉ đọc cho file "configuration.php" mới này để đảm
bảo nó không bị thay đổi nội dung.
• Khi bạn cần thay đổi các thiết lập cho Joomla hãy thực hiện bằng tay đối với file
"vinaora_joomla.conf"
• http://forum.joomla.org/index.php/topic,122594.0.html
• http://www.hvaonline.net/hvaonline/posts/list/72.hva
Keywords: FAQ, security, config, configuration, configuration.php, public_html,
web_root, secure files
Bài viết này xin cung cấp cho bạn một loạt các thủ thuật để tăng cường bảo mật cho
Website Joomla! được trích dẫn từ diễn đàn Joomla! (http://forum.joomla.org). Có thể
một vài thủ thuật hơi khó thực hiện hoặc gây khó khăn, thâm chí là lỗi cho hệ thống của
bạn, tuy nhiên đừng nản chí , mọi cái đều có giá của nó. Nếu không thiết lập một vòng
đai an toàn cho Website sẽ có lúc bạn phải hối tiếc vì điều đó và thiệt hại có khi là không
tính đếm được. Hãy tiến hành ngay khi có thể.
01. Luôn cập nhật phiên bản mới nhất (Joomla 1.0.x, Joomla 1.5)
02. Chỉ nên download Joomla! từ website chính thức Joomlacode.org và kiểm tra mã xác
thực MD5 (nếu có)
03. Xóa thẳng tay những thư mục hoặc file không còn sử dụng. Sau khi cài đặt thành
công Joomla, bạn phải xóa toàn bộ thư mục "installation". Nếu bạn upload lên Host bộ
cài Joomla ở định dạng nén (*.zip), bạn cũng cần phải xóa bỏ file nén này. Tốt nhất là
không nên để lại file hoặc thư mục gì ngoài gói Joomla.
04. Tăng cường bảo vệ cho file cấu hình "configuration.php" bằng cách chuyển nó ra
khỏi thư mục public (thường có tên là public_html). [Xem thêm]
05. Đổi tên tài khoản truy nhập Joomla thay vì tài khoản mặc định "admin". Bước này
tưởng chừng rất đơn giản nhưng lại ngăn chặn được khá nhiều cuộc tấn công. [Xem
thêm]
06. Chặn các truy vấn nguy hiểm nhờ file ".htaccess" [Xem thêm]
07. Bảo vệ các thư mục nhậy cảm, chẳng hạn thư mục "administrator" thông qua file
".htaccess" [Xem thêm]
08. Giới hạn các IP truy cập tới các thư mục nhậy cảm thông qua file ".htaccess" [Xem
thêm]
10. Sử dụng các công cụ nổi tiếng như PHPsuExec, php_suexec và suPHP.
11. Nếu có thể, hãy yêu cầu Server nạp các module mod_security và mod_rewrite để
lọc và chặn các truy vấn nguy hiểm.
12. Sử dụng tài khoản MySQL đã được thiết lập quyền giới hạn (không sử dụng tài khoản
root).
13. Cố gắng nâng cấp các đoạn mã sang PHP5. Riêng gói Joomla thì bạn không cần lo
lắng vì ngay từ ban đầu nó đã được thiết kế tương thích với PHP5.
14. Cố gắng không sử dụng các thành phần mở rộng yêu cầu "safe_mode" của PHP.
15. Tắt Joomla! Register Globals Emulation trong file "globals.php". [Xem thêm]
define( 'RG_EMULATION', 0 );
16. Thiết lập quyền truy cập (CHMOD) các thư mục sang 755, các file sang 644. Bạn có
thể vào Site --> Global Configuration --> Server để thiết lập các quyền này cho thư
mục và file. Bạn cũng có thể sử dụng một công cụ FTP như FileZilla, SmartFTP,
WS_FTP, Net2FTP... để CHMOD. Lưu ý: Một số thành phần mở rộng trong quá trình cài
đặt có thể yêu cầu quyền truy cập 777.
17. Xóa bỏ toàn bộ các template không sử dụng khỏi thư mục "templates" và không đặt
bất cứ đoạn mã nhạy cảm nào vào các file trong template.
18. Thuê một chuyên gia bảo mật Joomla! để kiểm tra toàn bộ Website của bạn.
37. Bảo mật cho trang quản trị administrator bằng mật
khẩu
Bạn muốn ngăn chặn việc truy cập trái phép vào vùng quản trị, trang administrator
(phần backend trong Joomla). Có nhiều giải pháp để thực hiện việc này. Bài viết này xin
giới thiệu một cách khá đơn giản nhưng lại hiệu quả với mục đích "Tăng cường thêm một
rào cản trước khi truy nhập được file index.php". Áp dụng trên Hosting chạy Apache
Server.
<?php
$name='439581667ef694b60d58f213cccf9503';
$pass='439581667ef694b60d58f213cccf9503';
if (!isset($_SERVER['PHP_AUTH_USER'])
|| md5($_SERVER['PHP_AUTH_USER'])!==$name
|| md5($_SERVER['PHP_AUTH_PW'])!==$pass)
{
header('WWW-Authenticate');
header('HTTP/1.0 401 Unauthorized');
exit('<a href="http://vinaora.com/">VINAORA</a> : Access Denied');
}
?>
Trong đó
username = vinaora
password = vinaora
38.