10/10/2018, 09:52

[PHP] Mảng $_POST tự thêm slashes vào ah

Lâu nay không để ý vấn đề này nên không biết
Mình thử thì thấy nếu nhập vào form dấu ' hay " thì PHP nó tự thêm dấu vào trước mỗi dấu ' hay "
Vậy dùng hàm addslashes() để chống hack chỉ dành cho mảng $_GET thôi ah? Có phải phiên bản PHP nào cũng thế hay không?
thuankkk viết 12:05 ngày 10/10/2018
http://php.net/manual/en/security.magicquotes.php
phuongthom viết 11:59 ngày 10/10/2018
$_GET, $_POST thì nó đều thêm \ vào hết
tuy nhiên việc thêm ký tự đó vào hay ko thì có thể chỉnh file config của PHP, vì thể thỉnh thoảng có thể gặp 1 số host ko tự thêm \ vào (hiếm)
khoanhi viết 12:01 ngày 10/10/2018
chạy hàm get_magic_quotes_gpc()

Nếu = true thì khỏi cần dùng addslashes()
Nếu = false thì cần addslashes()

Trước kia đọc code phpbb thấy phiên bản php 6 dev thì không có chuyện thêm vào ký tự \


Mấy cái open source, framework ... hình như đa phần thấy người ta toàn kiểm tra để đưa giá trị _POST với _GET về nguyên thủy tức là không có ký tự \ sau " hay ' (nếu server tự động thêm vào), rồi sau đó tùy trường hợp mà nó xử lý

=))
namduong8889 viết 11:56 ngày 10/10/2018
Chuẩn meng, dùng hàm này để khử cái lỗi đó nhé. Mình dùng rất thường xuyên.
Code:
  function POST_BUG($string) 
  { 	
    $string = str_replace('\"','"',$string);
    $string = str_replace("\'","'",$string);
    $string = str_replace("\\\\","\\",$string);
    RETURN $string;
  }
phuongthom viết 12:06 ngày 10/10/2018
Được gửi bởi namduong8889
Chuẩn meng, dùng hàm này để khử cái lỗi đó nhé. Mình dùng rất thường xuyên.
Code:
  function POST_BUG($string) 
  { 	
    $string = str_replace('\"','"',$string);
    $string = str_replace("\'","'",$string);
    $string = str_replace("\\\\","\\",$string);
    RETURN $string;
  }
function này khác gì strip_slash đâu
thuankkk viết 11:58 ngày 10/10/2018
Được gửi bởi khoanhi
Mấy cái open source, framework ... hình như đa phần thấy người ta toàn kiểm tra để đưa giá trị _POST với _GET về nguyên thủy tức là không có ký tự \ sau " hay ' (nếu server tự động thêm vào), rồi sau đó tùy trường hợp mà nó xử lý

=))
PHP Code:
<?php
  
function _stripr(&$value) { 
    
$value=is_array($value)?array_map('stripr'$value):stripslashes($value); 
    return 
$value
  }
  if((
function_exists("get_magic_quotes_gpc") and get_magic_quotes_gpc()) or (ini_get('magic_quotes_sybase') and (strtolower(ini_get('magic_quotes_sybase'))!='off'))) {
    
_stripr($_GET);
    
_stripr($_POST);
    
_stripr($_COOKIE);
  }
Cái này chôm dc từ php.net
thuyduongcd viết 11:54 ngày 10/10/2018
php 6 nó bỏ chức năng này rồi. chẳng hiểu tại sao
Bài liên quan
0