日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php过滤提交数据 防止sql注入***(8)

發布時間:2024/9/20 php 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php过滤提交数据 防止sql注入***(8) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

現在還剩下什么問題呢?遠程表單提交。

遠程表單提交

Web 的好處是可以分享信息和服務。壞處也是可以分享信息和服務,因為有些人做事毫無顧忌。

以 表單為例。任何人都能夠訪問一個 Web 站點,并使用瀏覽器上的 File > Save As 建立表單的本地副本。然后,他可以修改 action 參數來指向一個完全限定的 URL(不指向 formHandler.php,而是指向 http://www.yoursite.com/formHandler.php,因為表單在這個站點上),做他希望的任何修改,點擊 Submit,服務器會把這個表單數據作為合法通信流接收。

首先可能考慮檢查 $_SERVER[’HTTP_REFERER’],從而判斷請求是否來自自己的服務器,這種方法可以擋住大多數惡意用戶,但是擋不住最高明的***。這些人足夠聰明,能夠篡改頭部中的引用者信息,使表單的遠程副本看起來像是從您的服務器提交的。

處理遠程表單提交更好的方式是,根據一個惟一的字符串或時間戳生成一個令牌,并將這個令牌放在會話變量和表單中。提交表單之后,檢查兩個令牌是否匹配。如果不匹配,就知道有人試圖從表單的遠程副本發送數據。

要創建隨機的令牌,可以使用 PHP 內置的 md5()、uniqid() 和 rand() 函數,如下所示:

清單 18. 防御遠程表單提交

session_start();

if ($_POST[’submit’] == “go”){

//check token

if ($_POST[’token’] == $_SESSION[’token’]){

//strip_tags

$name = strip_tags($_POST[’name’]);

$name = substr($name,0,40);

//clean out any potential hexadecimal characters

$name = cleanHex($name);

//continue processing….

}else{

//stop all processing! remote form posting attempt!

}

}

$token = md5(uniqid(rand(), true));

$_SESSION[’token’]= $token;

function cleanHex($input){

$clean = preg_replace(”![\][xX]([A-Fa-f0-9]{1,3})!”, “”,$input);

return $clean;

}

?>

” method=”post”>

Name

”/>

這種技術是有效的,這是因為在 PHP 中會話數據無法在服務器之間遷移。即使有人獲得了您的 PHP 源代碼,將它轉移到自己的服務器上,并向您的服務器提交信息,您的服務器接收的也只是空的或畸形的會話令牌和原來提供的表單令牌。它們不匹配,遠程表單提交就失敗了。

轉載于:https://blog.51cto.com/tommike/1190489

總結

以上是生活随笔為你收集整理的php过滤提交数据 防止sql注入***(8)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。