[英]Is FILTER_SANITIZE_STRING enough to avoid SQL injection and XSS attacks?
[英]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);
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.