04/10/2018, 17:46

Dọn dẹp dữ liệu nhập từ inputs khi đưa vào database bằng PHP

Khi chúng ta lập ra một form cho phép người dùng nhập vào các giá trị vào các thẻ input rồi sau đó những giá trị này sẽ được lưu vào database. Thì có thể những giá trị đó có chứa những đoạn mã gây nguy hiểm cho website của chúng ta như SQL injections hay là những đoạn mã nguy hiểm khác. Để ...

Khi chúng ta lập ra một form cho phép người dùng nhập vào các giá trị vào các thẻ input rồi sau đó những giá trị này sẽ được lưu vào database. Thì có thể những giá trị đó có chứa những đoạn mã gây nguy hiểm cho website của chúng ta như SQL injections hay là những đoạn mã nguy hiểm khác.

don-dep-du-lieu-nhap-tu-inputs-khi-dua-vao-database-bang-php

Để tránh việc này , mình xin chia sẻ cho các bạn một đoạn code bằng PHP giúp các bạn có thể dọn dẹp sạch sẽ những mã độc có thể gây hại cho website trước khi chúng được lưu vào database.

function cleanInput($input) {

  $search = array(
    '@<script[^>]*?>.*?</script>@si',   // Loại bỏ javascript
    '@<[/!]*?[^<>]*?>@si',            // Loại bỏ HTML tags
    '@<style[^>]*?>.*?</style>@siU',    // Loại bỏ style tags
    '@<![sS]*?--[ 	

]*>@'         // Loại bỏ multi-line comments
  );

    $output = preg_replace($search, ', $input);
    return $output;
  }
?>
<?php
function sanitize($input) {
    if (is_array($input)) {
        foreach($input as $var=>$val) {
            $output[$var] = sanitize($val);
        }
    }
    else {
        if (get_magic_quotes_gpc()) {
            $input = stripslashes($input);
        }
        $input  = cleanInput($input);
        $output = mysql_real_escape_string($input);
    }
    return $output;
}

Và đây là ví dụ sử dụng đơn giản cho đoạn code bên trên

<?php
  $bad_string = "Hi! <script src='http://www.example.com/bad_script.js'></script> It's a good day!";
  $good_string = sanitize($bad_string);
  // $good_string returns "Hi! It's a good day!"

  // Chúng ta cũng có thể sử dụng để làm sạch giá trị nhận từ POST/GET
  $_POST = sanitize($_POST);
  $_GET  = sanitize($_GET);
?>

Mình mong là với chia sẻ này, các bạn có thể có thêm một kinh nghiệm trong việc lập trình nói chung và ngôn ngữ PHP nói riêng, và hy vọng là đoạn code bên trên sẽ giúp ích cho các bạn xây dựng những trang web hay blog chất lượng hơn.

Chúc các bạn thành công !

Tags: code database php code SQL injections

Chuyên Mục: PHP

Bài viết được đăng bởi webmaster

  • Tín IT

    bài viết rất là hay ^^ thanks add. đúng cái đang cần ^^

  • Tín IT

    thanks add nhiều. Cực kỳ bài viết rất hay ^^

0