Bảo mật trong PHP• Bảo mật trong PHP phải chú ý đến 3 nguy hiểm chính: – Cross site scripting : Để khắc phục nên dùng các hàm str_replace , strip_tags , htmlspecialchars , htmlentities .
Trang 1@Thực hành PowerPoint
Thiết kế Bài giảng điện tử
Trang 202/02/15 2
Tạo trang tìm kiếm thông tin
<?php
require("condb.php");
if (isset($_POST["submit"])){
$Masv=$_POST['MaSV'];
$sql=mysql_query("select Masv,Tensv from
sinhvien where Masv='".
$Masv."'");
}else{
$sql=mysql_query("select Masv,Tensv from
sinhvien");
}
?>
Trang 302/02/15 3
Tạo trang tìm kiếm thông tin
<form action="timkiem.php" method="post">
Mã sinh viên : <input type="text" name="MaSV" />
<input type="submit" value="tìm kiếm" name="submit" />
</form>
<table border=1 cellspacing=0 bordercolor=silver width=340>
<TR bgcolor=silver>
<td align=center>STT</td>
<td align=center>Họ Tên</td>
</tr>
<?php while ($row=mysql_fetch_array($sql)){ ?>
<tr>
<td> <?php echo $row['Masv'];?> </td>
<td> <?php echo $row['Tensv'];?> </td>
</tr>
<?php
}
?>
</table>
Trang 4Bảo mật trong PHP
• Bảo mật trong PHP phải chú ý đến 3 nguy hiểm chính:
– Cross site scripting : Để khắc phục nên dùng các hàm str_replace , strip_tags , htmlspecialchars , htmlentities .vvv để tránh việc gọi hoặc chèn các đoạn mã không mong muốn
–SQL injection: Lỗi này chạy yêu cầu thực thi SQL không mong muốn Để chống lại tham khảo nhóm hàm addslashes
–Buffer overflow in Mysql : Cái này thường thấy ở PHP site Việt Nam Dữ liệu được đưa vào không kiểm tra khiến ngập lụt, gây quá tải cho server hoặc thừa chồng chéo trong Database Hãy dùng Capcha Image để chống hoặc 1 cách tương tự mà bạn phát triển lên
Trang 5Test lỗi khi submit
Một số loại dữ liệu khác mà cũng nên thử submit để biết xem trang web có gặp lỗi hay không:
' or
" or
or
1=1 ' or 1=1 'a1=1 '=1=1 'a
" or "a"="a
') or ('a'='a
Trang 6Cách ngăn chặn
• Sử dụng hàm addslashes dùng để xử lý các biến trước khi đưa vào câu Query sử dụng
• Ví dụ: addslashes ($_POST[‘username’]);
Trang 7Lỗi các tham số khi liên kết
• Thông thường thì để kiểm tra lỗi SQL injection ở dạng thứ nhất ta thường thêm dấu ‘(dấu nháy) vào phía sau các địa chỉ truyền tham số dạng “user.php?id=”.
• Ví dụ: http://localhost/web/hienthi.php ?masv=sv01’hoặc
Trang 8Viết hàm khắc phục lỗi
<?php
function quote( $value ) {
if( get_magic_quotes_gpc() ){
$value = stripslashes( $value );
}
//check if this function exists
if( function_exists( "mysql_real_escape_string" ) ){
$value = mysql_real_escape_string( $value ); }
else{
$value = addslashes( $value );
}
return $value;
}
?>