PHP là một ngôn ngữ lập trình mã nguồn mở đáp ứng cho sự phát triển web và sử dụng song song với mã HTML. Ngôn ngữ lập trình PHP có cách thức viết gẫn gũi với C và PERL , tuy nhiên PHP viết dễ dàng , không cầu kỳ như C hoặc PERL với cách đặt biến dễ chịu và tất cả kiến thức về học lập trình cơ bản sẽ có trong giáo trình dạy thiết kế web bằng php.
+ Dạng truyền biến:
Khi
lập trình ta thường thấy nhiều lỗi do cách thức truyền biến ra IE hoặc
Netcape do form . Khi submit một form nào đó , các biến trong form có
thể truy xuất ra , và được sử dụng như là biến toàn cục ( global ) ,
$_POST , $_GET , $_VAR … .NGoài cách đưa biến từ form còn có session và cookies .
Mỗi con đường truyền biến bao giờ cũng có cái lợi và các hại của nó . Ở đây xin đề cập đến vấn đề tác hại của nó.
Mỗi con đường truyền biến bao giờ cũng có cái lợi và các hại của nó . Ở đây xin đề cập đến vấn đề tác hại của nó.
Khi một lập trình viên được đào tạo lập trình với ngôn ngữ PHP nếu không cẩn thận sử dụng biến có thể dẫn đến nhiều sự nguy hiểm khác nhau .
Các
thức truyền biến được xem là nguy hiểm nhất là dạng truyền biến trên
bar address của các chương trình duyệt web . Khi đó kẻ tấn công có thể
lợi dụng những sơ hở này để khai thác và nguy hiểm là SQL injection .
Ví dụ . Khi bạn sử dụng các biến trực tiếp trên address bar để dùng cho các mệnh đề logic , thì thường dễ bị vượt qua.
Ví dụ . Khi bạn sử dụng các biến trực tiếp trên address bar để dùng cho các mệnh đề logic , thì thường dễ bị vượt qua.
1
|
if ($hello) echo "hello"; |
Code ví dụ :Code trên cho thấy nếu tồn tạn biến $hello rồi sẽ thực thi . Vậy vấn đề chỉ cần cho nó tồn tại . Vì thế ta nên kiểm tra biến với một giá trị nào đó , xác định thì lỗi có thể được thông qua ( nhưng nếu source của bạn đã được tham khảo thì điều này coi như vô nghĩa – Sẽ được nói sau tại mục PHP exploit local ) .
Submit form với hình thức GET , thì các biến
trong form sẽ được truyền trực tiếp lên address bar và nếu sử dụng biến
toàn cục đó liên quan đến Uncode thì … hiệu quả sẽ giảm đi . Chẳng hạn
bạn tạo một form như sau :
1
2
3
4
|
<form name="test" action="" method=GET><input name="key" type=text><input type=submit value="Test"></form> |
Xin được nói sơ về SQL injection với cách truyền biến này .
Ví dụ :
Ví dụ :
1
|
$a = MySQL_query("SELECT * FROM user $osd"); |
Nếu
$osd trên address lộ ra như vậy : ORDER by id DESC Thì ta có thể thay
thế biến osd với một giá trị khác là code PHP chẳng hạn . Vậy là chẳng
khác nào tạo điều kiện cho kẻ tấn công thực hiện những hành động chết
người.
1
2
|
userid=11passhash="helloall" |
Ví dụ :Khi
bạn nhập ttext với dạng unicode thì khi truyền trên address bar các ký
tự sẽ không còn chính xác nữa . Vậy làm cách nào khắc phục .
Theo thienduongweb
Không có nhận xét nào:
Đăng nhận xét