2014-10-27 70 views
0

問題

我有一個相當大的平臺上的問題,用戶可以在輸入的開始和結尾輸入包含空格的數據。這會導致問題。我知道我可以修改JavaScript驗證,但是這個網站有大量的頁面和表單。查找和更改每個事件將是一場噩夢。從_Request,_Post和_Get修剪空間的缺點?

解決方法

由於所有的形式和頁面共享的index.php,我覺得之前的任何控制器/路由處理是由處理平臺攔截了請求/ GET/POST變量的想法。

注意:我知道這是一個非常便宜的方法。但是,必須立即採取行動,直到我至少能夠以正確的方式開展工作。這是完美的,因爲它是。我只是有一些擔憂。

$_REQUEST = array_map('trim',$_REQUEST); 
$_GET  = array_map('trim',$_GET); 
$_POST = array_map('trim',$_POST); 

值得關注的問題

  1. 是否有任何實際合法場景中的代碼會出錯呢?

  2. 是否有重大業績影響?

  3. 有沒有安全缺陷?

  4. 是否存在數據完整性被trim()破壞的風險?

+0

只需在使用它們時修剪這些值。 – 2014-10-27 20:15:12

+1

1.發佈陣列結構的表單域時。 2.通常不會,但您始終可以使用分析器。 3.不清楚; Unicode空白字符數。 4.太寬泛。你沒有任何關於你的數據的東西。 – mario 2014-10-27 20:17:14

+0

次優,但可能確定 – 2014-10-27 20:17:52

回答

1
  1. 我想不出任何。修剪將簡單地修剪字符串的前導和尾隨空格。但是,它會在嵌套數組上失敗。
  2. 這種情況會影響性能,但它並不重要。但請注意,即使沒有發佈數據,這也會在每個index.php調用中運行。
  3. 修剪不會導致安全漏洞。如果您在格式化數據的後一頁中驗證並清理用戶輸入,則不應該有任何內容。
  4. 我不能沒有進一步的知識回答這個問題。

如果這只是一個臨時的解決方法,那麼它會完成這項工作。但我不會永遠這樣做,我建議你在可以的時候逐個修正它。

0

嗯,這是危險和我會不是推薦這個。

這裏的原因:

如果有任何頁面的形式,這些形式包括密碼字段開始或用空格結束,然後用戶可以選擇密碼! (是的,密碼中的空格絕對沒問題,因爲無論如何你都要加密密碼)

所以問題是:

當你修剪所有領先的,從現在起結束空格,則誰是已經有這樣的密碼登錄的用戶將不再能夠登錄(因爲每一次他嘗試要提交他的有效密碼(以空格開頭或結尾),您的方法將刪除這些空格,儘管他需要這些空格才能登錄)。

此外,一位嘗試使用以空格開頭或結尾的密碼創建新帳戶的NEW用戶永遠無法登錄EVER。因爲他甚至不知道他的密碼被修剪了。

說實話:請小心這樣的事情!