亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

最終的清潔/安全功能

最終的清潔/安全功能

神不在的星期二 2019-06-19 11:16:10
最終的清潔/安全功能我有很多來自$_GET和$_POST..現在我總是寫mysql_real_escape_string($_GET['var'])..我想知道您是否可以創建一個函數來保護、逃避和清除$_GET/$_POST數組,所以您不必每次處理用戶輸入之類的問題。我在想一個函數,例如cleanMe($input),在里面,它應該可以mysql_real_escape_string, htmlspecialchars, strip_tags, stripslashes(我認為這將使它變得干凈和安全),然后返回$input.這有可能嗎?創建一個對所有人都有效的函數$_GET和$_POST所以你只會這樣做:$_GET  = cleanMe($_GET);$_POST = cleanMe($_POST);因此,在以后的代碼中,當您使用例如$_GET['blabla']或$_POST['haha'],它們是安全的,被剝離的等等?試了一下:function cleanMe($input) {    $input = mysql_real_escape_string($input);    $input = htmlspecialchars($input, ENT_IGNORE, 'utf-8');    $input = strip_tags($input);    $input = stripslashes($input);    return $input;}
查看完整描述

3 回答

?
紅顏莎娜

TA貢獻1842條經驗 獲得超13個贊

關于一般衛生功能的想法是一個破碎的概念。

的確有正確的衛生方法適用于各種用途。在字符串上不加區分地運行它們通常會破壞字符串-為SQL查詢轉義一段HTML代碼會破壞它,以便在網頁中使用,反之亦然。衛生設施應適用就在那之前利用這些數據:

  • 在運行數據庫查詢之前。正確的衛生方法取決于您使用的庫;如何防止PHP中的SQL注入?

  • htmlspecialchars()為了獲得安全的HTML輸出

  • preg_quote()用于正則表達式

  • escapeshellarg() / escapeshellcmd()用于外部命令

使用“一刀切”的衛生功能就像在植物上使用五種毒性很高的殺蟲劑,根據定義,這種殺蟲劑只能包含一種蟲子-結果卻發現你的植物受到第六種殺蟲劑的侵擾,而這些殺蟲劑都不起作用。

始終使用正確的方法,最好是在將數據傳遞給函數之前直接使用。絕不可能混合方法,除非你需要。


查看完整回答
反對 回復 2019-06-19
?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

簡單地通過所有這些函數傳遞輸入是沒有意義的。所有這些功能都有不同的含義。數據不能通過調用更多的轉義函數而變得“更干凈”。

如果要將用戶輸入存儲在MySQL中,則只需使用mysql_real_escape_string..然后將其完全轉義,以安全地存儲在數據庫中。

編輯

還請注意使用其他函數時出現的問題。例如,如果客戶端向服務器發送一個用戶名,并且該用戶名包含一個符號和(&),你不想給我打電話htmlentities在將其存儲在數據庫中之前,因為數據庫中的用戶名將包含&.


查看完整回答
反對 回復 2019-06-19
?
揚帆大魚

TA貢獻1799條經驗 獲得超9個贊

問題是,對于一種用途來說,干凈或安全的東西不會是另一種用途:清除路徑的一部分、MySQL查詢的一部分、HTML輸出(如html、javascript或輸入值),因為XML可能需要不同的內容,這是矛盾的。

但是,一些全球性的事情是可以做的。試著使用濾波器輸入獲取用戶的輸入。和使用準備好的陳述用于SQL查詢。

雖然,您可以創建一些類來管理您的輸入,而不是一個“全功能”函數.就像這樣:

class inputManager{
  static function toHTML($field){
    $data = filter_input(INPUT_GET, $field, FILTER_SANITIZE_SPECIAL_CHARS);
    return $data;
  }
  static function toSQL($field, $dbType = 'mysql'){
    $data = filter_input(INPUT_GET, $field);
    if($dbType == 'mysql'){
      return mysql_real_escape_string($data);
    }
  }}

在這種情況下,如果在代碼中看到任何$_post、$GET、$_Request或$_cookie,就必須更改它。如果有一天你必須改變過濾輸入的方式,只需改變你創建的類。


查看完整回答
反對 回復 2019-06-19
  • 3 回答
  • 0 關注
  • 585 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號