- Vấn nạn đầu tiên trong việc thiết kế web đó là post or get bừa bãi tạo nên 1 hệ thống tạm gọi là tùm lum.
- Trong một số vidu hacking cho thấy có một kiểu hack điển hình đó là post form từ client lên dữ liệu của server , Ở đây tác giả thứ nhất không để ý đến session hoặc cookie lợi dụng kẽ hở này hacker có thể rất dễ dàng post 1 file thông qua 1 form html ở dưới máy của bạn hoặc ở 1 nơi nào đó để form với các tên của phần tử trong form trùng với tên của các phần tử web sẽ nhận
Ví dụ
http://www.milw0rm.com/exploits/6127
Đây là 1 ví dụ của dạng hack này
- Ở đây xin nêu lên cách khắc phục cực kỳ đơn giản mà chẳng mất bao nhiêu thời gian cả.
Nếu đã đụng chạm đến php chắc rằng các bạn đã biết 2 hàm chính đó là define và defined
Ở trang chính định nghĩa một giá trị như sau:
-
<?php
define("HHDVN",true);
include("vidu1.php");
?>
- Ở files vidu1.php:
<?php
if(!defined("HHDVN")) die ("Error");
echo "123456alo";
?>
với kiểu này điều đầu tiên nếu truy cập thẳng vào file vidu1.php sẽ trả về giá trị Error.
Phần nội dung echo bên dưới sẽ không chạy
Nếu gọi vidu1 từ files có nội dung như bên trên thì khi đó chúng ta đã định nghĩa HHDVN
Điều này hạn chế được việc tấn công của các hacker vào các phần lẻ mà bạn không để ý
-- Điều thứ 2 xin đưa ra 1 số vấn đề về sql inject trong php
Việc thường ngày chúng ta làm đó là gì: select lấy id và chạy theo id và id chạy theo dạng số khi chạy để thể hiện bản tin hoặc sản phầm nhưng ở mysql và một số hệ quản trị cơ sở dữ liệu thì chỉ có số là có thể auto vậy vấn đề ở đây là gì giả dụ chúng ta có một trường id (int or cint) ở một table a nào đó chúng ta muốn lấy dữ liệu ở trường ở id của sản phẩm đưa vào ta sẽ dùnng câu truy vấn sql sau :
"select * from a where id=".$id.""
Bình thường khi đưa giữ liệu dầu vào dạng int hoặc cint thì sẽ ko sao. Nhưng hãy đưa một số chuỗi hoặc dấu ' "" vào thì sẽ có vấn đề ngay. Trong trường hợp này điều đâu tiên chúng ta nghĩ đến đó là convert id.
Convert id như thế nào trong php. Có 2 cách:
++Các thứ nhất: set lại type cho dữ liệu
Ví dụ như sau:
<?php
$id = "1lak";
settype($id,integer);
echo $id;
?>
Ở ví dụ này $id sẽ chỉ trả về giá trị là 1
Ứng dụng tương tự khi các bạn dùng $_GET or $_POST
++Cách thứ 2 tương tự :
Ví dụ sau
<?php
$id="1111kkkk"
$id = intval($id);
echo $id;
?>
Ở ví dụ này $id trả về sẽ là dạng số =>> chúng ta sẽ ko sợ nguy cơ tấn công sql injection
Ở bài này các bạn ứng dụng tốt sẽ hạn chế được các cách tấn công sql của hacker. Một kiến thức khá đơn giản cho nhưng ai đang làm web php.
Nguồn: leech
No comments:
Post a Comment