Thứ Ba, 9 tháng 9, 2014

PHIÊN BẢN DRUPAL 7 CHÍNH THỨC RA MẮT

Hôm nay phiên bản Drupal 7 chính thức đầu tiên đã ra mắt. Đây là phiên bản Drupal ổn định nhất từ trước đến nay, với hàng loạt thay đổi mới trong nền tảng.
Drupal là hệ quản trị nội dung (CMS) mã nguồn mở dựa trên PHP, từng hai lần đạt giải CMS nguồn mở tốt nhất, một lần đạt giải CMS nguồn mở danh giá nhất của Packtpub. Drupal có cấu trúc linh hoạt, dễ mở rộng, nên còn được xem là một nền tảng để xây dựng bất kì ứng dụng web nào.

Drupal 7 mang đến một giao diện quản trị hoàn toàn mới với rất nhiều cải tiến cho người phát triển site và người quản lí nội dung. Giao diện overlay sử dụng AJAX giúp bạn có một trải nghiệm tuyệt vời nhất.

Drupal 7 cũng linh hoạt hơn với khái niệm trường tuỳ biến (Fields). Trường cho phép bạn mở rộng gần như mọi đối tượng trong Drupal bằng cách gán thêm thuộc tính cho chúng. Bạn có thể gán thuộc tính cho rất nhiều đối tượng, trong đó có bài viết, bình luận, người dùng và thậm chí gán thuộc tính cho cả tag.

Kể từ phiên bản 7, Drupal hỗ trợ nhiều CSDL khác nhau, từ MySQL cho đến PostgreSQL, SQLite, MS SQL Server, Oracle… và thậm chí có thể mở rộng để hỗ trợ các dạng NoSQL.

Phiên bản 7 cũng chú trọng trong các cải tiến về hiệu năng. Các kĩ thuật tối ưu CSS/JS, chia tải, proxy nghịch… đều được hỗ trợ rất tốt. Đây cũng là phiên bản Drupal ổn định nhất từ trước đến nay với hơn 30 nghìn bài kiểm tra đơn vị.

Bất kì thay đổi nào của hệ thống đều phải vượt qua toàn bộ các bài kiểm tra này trước khi được thông qua.Drupal đang được sử dụng trong rất nhiều lĩnh vực, từ các báo điện tử, website/Intranet của doanh nghiệp, trường học cho đến các website văn hoá, nghệ thuật, cộng đồng và các mạng xã hội.

Drupal 7 yêu cầu:

* Máy chủ Web Apache, Nginx, Lighttpd, hoặc Microsoft IIS
* MySQL 5.0.15+, PostgreSQL 8.3+, hoặc SQLite 3.x
* PHP 5.2.4+
* Bộ nhớ: 32 MB (để cài thêm một số mô-đun phổ biến, có thể cần đến 64 MB)

Để làm quen, bạn hãy vào http://www.drupalgardens.com/ để tạo một website Drupal 7 miễn phí, tuỳ chỉnh theo ý mình trong vòng 15 phút.

Sử dụng HTML Encoding trong ASP.NET MVC3

Mục tiêu của bài viết này là tôi sẽ nói về phương thức Raw của ASP.NET MVC3 nhằm định dạng các kiểu cho một ứng dụng website cụ thể nào đó.
Để biết cách tạo một ứng dụng ASP.NET MVC3, xin các bạn xem bài viết để hiểu rõ hơn, ở đây tôi sẽ không quay lại cách tạo ứng dụng ASP.NET MVC3
Bước 1: Tạo một Models có tên Product để định nghĩa các Properties như sau:
public class Products
    {       
            public int ProductId { getset; }
            public string ProductName { getset; }
            public string Description { getset; }
     }
Bước 2: Vào trong HomeController, tôi khởi tạo dữ liệu cho Models Product. Đây là nơi chứa nguồn dữ liệu cho Product
public ActionResult Index()
        {
            IEnumerable<Products> product = new List<Products>() {
                new Products(){ProductId=1,ProductName="Laptop",Description="Chi tiet ve may tinh <b>Laptop</b>"},
                new Products(){ProductId=2,ProductName="PC",Description="Chi tiet ve may tinh PC"},
                new Products(){ProductId=3,ProductName="IPad",Description="Chi tiet ve may tinh <b>Tablet</b>"}               
            }.ToList(); 
            ViewBag.Message = "Welcome to ASP.NET MVC!"
            return View(product);
        }
Ở đây, các bạn nhìn thấy trường Description có các định dạng <b></b> ở 3 Record của Product.
Chúng ta ngầm hiểu, khi hiển thị dữ liệu thì những định dạng <b></b> này sẽ in đậm.
Bước 3: Vào View/Home/Index.cshtml để viết mã lệnh nhằm hiển thị lên Browser như sau
@model IEnumerable<HTMLEncoding.Models.Products>
@{
    ViewBag.Title = "Home Page";
}
<h2>@ViewBag.Message</h2>
<p>
    To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>.
</p>
<ul id="nav">
@foreach (var item in Model )
       {
        <li style="float:left;width:10%;list-style:none;">@item.ProductId</li>
        <li style="float:left;width:30%;list-style:none;">@item.ProductName</li>
        <li style="float:left;width:60%;list-style:none;">@item.Description</li>
        <li style="clear:both;list-style:none;"></li>
    }
</ul>
Bước 4: Nhấn F5 để kiểm tra ứng dụng website, thì các bạn sẽ thấy phần Description không định dạng được, xem hình bên dưới
Trương Minh Tuấn
Bước 5: Vào View/Home/Index.cshtml sửa phần @item.Description thành @Html.Raw(item.Description)
Bước 6: Nhấn F5 một lần nữa để kiểm tra, xem hình bên dưới
Trương Minh Tuấn

THỦ THUẬT PHP PHẦN 3

THỦ THUẬT HỌC PHP 

Bảo vệ chống lại các lỗ hổng XSS

Các lỗ hổng XSS chiếm một tỷ lệ lớn trong tất cả các lỗ hổng về trang web được ghi chép lại trong năm 2007 (xem Tài nguyên). Một lỗ hổng XSS xuất hiện khi một người sử dụng có khả năng bơm mã HTML vào các trang web của bạn. Mã HTML có thể mang theo mã JavaScript bên trong các thẻ kịch bản (script tags), bằng cách đó cho phép JavaScript chạy bất cứ khi nào một trang được rút ra. Biểu mẫu trong Liệt kê 9 có thể đại diện cho một diễn đàn, trang mạng biên tập tự do (wiki), mạng xã hội, hoặc bất kỳ trang web nào khác thông dụng để gõ nhập văn bản.
Liệt kê 9. Biểu mẫu để nhập vào văn bản
<html>
<head>
<title>Your chance to input XSS</title>
</head>
<body>
<form id="myFrom" action="showResults.php" method="post">
<div><textarea name="myText" rows="4" cols="30"></textarea><br />
<input type="submit" value="Delete" name="submit" /></div>
</form>
</body>
</html>
Liệt kê 10 chứng tỏ cách biểu mẫu này in ra được các kết quả, cho phép tấn công bằng XSS.
Liệt kê 10. showResults.php
<html>
<head>
<title>Results demonstrating XSS</title>
</head>
<body>
<?php
echo("<p>You typed this:</p>");
echo("<p>");
echo($_POST['myText']);
echo("</p>");
?>
</body>
</html>
Liệt kê 11 đưa ra một thí dụ cơ sở trong đó các cửa sổ mới bật ra mở đến trang chủ của Google. Nếu ứng dụng web của bạn không bảo vệ chống lại các tấn công bằng XSS, thì giới hạn thiệt hại duy nhất chỉ còn là sức tưởng tượng của kẻ thâm nhập mà thôi. Ví dụ, một ai đó có thể thêm vào một liên kết mà bắt chước kiểu dáng của trang web đó để lừa đảo (phishing) (xem Tài nguyên).
Liệt kê 11. Mẫu văn bản đầu vào độc hại
<script type="text/javascript">myRef = window.open('http://www.google.com','mywin',
'left=20,top=20,width=500,height=500,toolbar=1,resizable=0');</script>
Để tự bảo vệ bạn chống lại các tấn công XSS, hãy lọc đầu vào của bạn thông qua hàm htmlentities() bất cứ khi nào giá trị của một biến được in đến đầu ra. Hãy nhớ làm theo thói quen đầu tiên về kiểm tra hợp lệ dữ liệu đầu vào bằng các giá trị trong danh sách trắng trong ứng dụng web của bạn đối với tên, địa chỉ email, số điện thoại, và thông tin về hoá đơn thanh toán.
Một phiên bản an toàn hơn nhiều của trang để hiển thị văn bản đầu vào như dưới đây.
Liệt kê 12. Một biểu mẫu an toàn hơn
<html>
<head>
<title>Results demonstrating XSS</title>
</head>
<body>
<?php
echo("<p>You typed this:</p>");
echo("<p>");
echo(htmlentities($_POST['myText']));
echo("</p>");
?>
</body>
</html>