Pages

Thứ Tư, 11 tháng 4, 2012

Debug position

0 nhận xét
* If your template do not have Debug position, you must add the Debug position at the bottom of your template:

- Find:
Mã:
</body>

- Before add:
Mã:
<jdoc:include type="modules" name="debug" />

Your code looks like this:
Mã:
...
<jdoc:include type="modules" name="debug" />
</body> 
</html>

Thứ Ba, 27 tháng 3, 2012

Forbidden 404

0 nhận xét
Bản tóm tắt này không có sẵn. Vui lòng nhấp vào đây để xem bài đăng.

Chủ Nhật, 25 tháng 3, 2012

[JS] Code chống sao chép nội dung

0 nhận xét
<SCRIPT language=JavaScript type=text/javascript> 

      function disableselect(e){return false} 
  
      function reEnable(){return true} 


      //if IE4+ 

      document.onselectstart=new Function ("return false") 

      //if NS6 

      if (window.sidebar){ 

      document.onmousedown=disableselect 

      document.onclick=reEnable 

      } 

      </script> 


















Dán vào <head>...</head> trang web, như wp là file header.php trong theme 

Thứ Bảy, 24 tháng 3, 2012

Chống tấn công SQL Injection trong Joomla

0 nhận xét
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).
Đối với người sử dụng cuối (end-user):
Không dùng tiền tố mặc định 'jos_'
Khi cài đặt website, Joomla sử dụng tiền tố mặc định cho các bảng của cơ sở dữ liệu: 'jos_'. Tuy nhiên để tránh sự nhòm ngó của các haker bạn nên đổi tiền tố này.
Không dùng tài khoản mặc định 'admin'
  • Tạo một tài khoản quản trị (Super Administrator) mới thay vì dùng tài khoản mặc định có tên 'admin'
  • Đổi tên và vô hiệu hóa tài khoản mặc định 'admin' mà Joomla đã tạo ra khi cài đặt bằng cách: Mở bảng _users, tìm bản ghi có id=62, đổi usernamekhác 'admin' và thay block bằng '1')
Đối với những người lập trình (developer) thì chú ý những vấn đề sau:
É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:
$sql = 'UPDATE #__mytable SET `id` = ' . (int) $int;
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:
$date = & JFactory::getDate($mydate);
$sql = 'UPDATE #__mytable SET `date` = ' . $db->quote( $date->toMySQL(),false);
Luôn gỡ bỏ ý nghĩa của những ký tự đặc biệt
Bạn cần gỡ bỏ ý nghĩa của những ký tự đặc biệt (những ký tự có khả năng gây nguy hiểm cho câu lệnh SQL) nằm trong các chuỗi dữ liệu được đưa vào câu lệnh SQL bằng câu lệnh:
$sql = 'UPDATE #__mytable SET `string` = ' . $db->quote( $db->getEscaped( $string ), false );
Chống tấn công DOS
Trong các mệnh đề WHERE, nếu bạn có sử dụng lệnh LIKE, hãy đảm bảo rằng bạn đã lọc các ký tự đặc biệt như "%" và "_"  thì sử dụng câu lệnh SQL:
$sql = 'UPDATE #__mytable SET .... WHERE `string` LIKE '.
          $db->quote( $db->getEscaped( $string, true ), false )
Chống tấn công XSS
Rất nhiều người có thói quen lấy dữ liệu nhập vào từ người dùng bằng câu lệnh JRequest::getVar(). Tuy nhiên đây là một thói quen không tốt. Thay vào đó bạn nên sử dụng các phương thức ép kiểu. Thí dụ:
Nếu muốn kiểu số nguyên, dùng câu lệnh:
$int = JRequest::getInt( $name, $default );
Nếu muốn kiểu số thực, dùng câu lệnh:
$float = JRequest::getFloat( $name, $default );
Nếu muốn kiểu logic (đúng/sai), dùng câu lệnh:
$bool = JRequest::getBool( $name, $default );
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:
$word = JRequest::getWord( $name, $default );
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:
$cmd = JRequest::getCMD( $name, $default );
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:
$string = JRequest::getString( $name, $default );
Tham khảo.

Giúp bạn bảo mật Website Joomla

1 nhận xét
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.

1. Sao lưu toàn bộ Website theo định kỳ

Điều đầu tiên và cũng là quan trọng nhất là bạn phải thường xuyên sao lưu toàn bộ Website bao gồm cả thư mục chứa Joomla và cơ sở dữ liệu MySQL. Hãy lập lịch ít nhất một lần trong tuần (khuyến cáo là mỗi ngày một lần) để thực hiện sao lưu. Bạn sẽ tiết kiệm được rất nhiều công sức và tiền của khi Website bị tấn công và chỉ mất vài phút hoặc vài chục phút để khôi phục lại gần như toàn bộ.

2. Nâng cấp khi Joomla có phiên bản phát hành ổn định mới nhất.



Nhóm phát triển nòng cốt của Joomla luôn phát hành đều đặn vài tháng một lần phiên bản Joomla mới bao gồm cả các bản vá lỗi bảo mật và và các bản vá tăng cường hiệu suất làm việc, do vậy bạn cần kiểm tra thường xuyên trên website của Joomla (http://www.joomla.org) để kịp thời cập nhật phiên bản mới nhất.

3. Kiểm tra các thành phần mở rộng (module, component, mambot/plugin) của các hãng thứ ba



Một số Website có thể bị tấn công thông qua các lỗi bảo mật nằm trong các thành phần mở rộng được cài đặt thêm từ hãng thứ ba. Do vậy bạn cũng luôn phải chắc chắn rằng nếu mình có cài đặt các thành phần mở rộng từ hãng thứ ba thì đó phải là các phiên bản mới nhất.

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.



4. Quyền hạn đối với các thư mục

Sau khi cài đặt các thành phần mở rộng, bạn cần thiết lập quyền hạn đối với các thư mục sang chế độ CHMOD 755.

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
5. Quyền hạn đối với các tệp



Thiết lập quyền hạn đối với tất cả các tệp của bạn sang chế độ CHMOD 644.



6. Quyền hạn đối với tệp configuration.php




Đây là một điều rất quan trọng. Bạn phải chắc chắn rằng mình đã thiết lập quyền hạn cho tệp "configuration.php" sang CHMOD 644.

7. Bảo mật với .htaccess



Bản phát hành mới nhất của Joomla bao gồm cả phiên bản cập nhật cho tệp ".htaccess" để làm giảm thiểu nguy cơ tấn công từ các hacker. Do vậy bạn cần phải truyền tệp .htaccess này tới server của bạn và đổi quyền hạn sangCHMOD 644.

8. Joomla! Register Globals Emulation.



Bạn cần phải chắc chắn rằng biến "register global emulation" được thiết lập thành OFF. Hãy mở tệp "global.php", tìm dòng define('RG_EMULATION', 1) và đổi nó thành

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

php_flag register_globals off.

Bảo mật cho trang quản trị joomla bằng cookie

1 nhận xét

Thứ Sáu, 23 tháng 3, 2012

Lỗi truy cập 404 - Xin giúp cách khắc phục

0 nhận xét
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
if(($this->error->code)=='404'){
   header('Location:/trang-chu.html');
   exit;
}
?>