簡體   English   中英

在PHP中如何避免SQL注入和XSS攻擊?

[英]How to avoid SQL injection and XSS attacks when in PHP?

我正在使用以下方法來避免xss攻擊。 這是正確的使用方法嗎?如果沒有,請告訴我避免攻擊的正確方法。

$first_name=strip_tags($_POST["txt_firstname"]);

這是為了避免xss和

$fname=filter_var($first_name, FILTER_VALIDATE_REGEXP,array("options"=>array("regexp"=>"/^[a-zA-Z ]+$/")));
if($fname===FALSE)
{
    echo "error";
}
else {
 echo "success;    
}

這是好方法嗎?

我建議您將filter_input函數與其中一個清理過濾器一起使用,以刪除所有不需要的字符,如果這樣做還不夠,您可以像應用filter_var一樣,通過應用其他過濾器來驗證輸入:

$first_name = filter_input(INPUT_POST, 'txt_firstname', 
    FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$email = filter_input(INPUT_POST, 'txt_email',
    FILTER_SANITIZE_EMAIL);

為了防止SQL注入,請使用准備好的語句 看到這里這里了解更多。

strip_tags應該刪除所有標簽,但是您可以使用filter_var作為替代方案,以防止xss攻擊

$first_name = filter_var($_POST["txt_firstname"], FILTER_SANITIZE_STRING);

為了防止sql注入,您需要清理POST:

例如:

$first_name = filter_var($_POST["txt_firstname"], FILTER_SANITIZE_STRING);
 $first_name = mysqli_real_escape_string(trim($first_name));

我建議您使用GUMP之類的工具來清潔/過濾/消毒輸入。

require "gump.class.php";
//remove the line above if you're going to use composer

$gump = new GUMP();

$_POST = $gump->sanitize($_POST);

您也可以添加自己的清理過濾器以對其進行過濾,並且由於這些工具專用於處理這些問題,因此即使將來找到新的攻擊媒介,也可能在您不了解它們的情況下對其進行修復。 (只要您經常更新工具)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM