我的大多數問題都是理論性的,因爲我認爲「偉大的思想家討論想法」和職員討論語法。將用戶數據存儲在數據庫中無需轉義
不管怎麼說..所以這裏的情況是
我有采取從user.BUT沒有該輸入的輸入查詢(全部)使用的系統。這個輸入包含很多代碼片段。現在在過去,我逃過了輸入,然後將其存儲在數據庫中。我不使用任何添加和剝離斜線功能排序,而使用它們使用的preg_replace像下面
$data = preg_replace("/\;/", ";", $data);//
$data = preg_replace("/</", "<", $data);
$data = preg_replace("/>/", ">", $data);
$data = preg_replace("/\"/", """,$data);
$data = preg_replace("/\(/", "(", $data);
發生然而下面的問題我自己的程序。
有時軟件會錯誤地轉義數據(因爲我的軟件沒有缺陷),我將無法找到實際數據。 不時更新我的轉義程序,這意味着不同的輸入轉義不同。
用戶可以選擇編輯他的帖子。這意味着我必須向他呈現轉義數據(或不轉義數據)以防止數據泄漏兩次...... 因此,我終於得出結論,我直接從用戶保存未轉義的數據進入數據庫。並在顯示之前將其轉義(它沒有其他目的..在查詢中沒有用處等)。對於其他任何事情我都有原始數據未更改。
我的問題::
可以取消逃脫數據庫中的用戶數據仍然是危險的,即使在查詢中不使用或顯示之前逃脫???
與斜線相等/更好/比換款字符。例如:<到<逃逸不同逃逸..
如果數據正確地轉義(我的意思是所有的特殊字符),那麼它還可以用於XSS攻擊。 SQL注入是沒有問題的。
這麼簡短,但這樣一個偉大的答案。 +1 – drew010 2012-07-23 21:02:00
我還會添加「永遠不要寫你自己的轉義函數」。 – Vatev 2012-07-23 21:07:25
ohh ...亞做出這麼多的意義..你可以plz指示我去一些地方閱讀更多關於...什麼是顯示編碼...什麼是存儲編碼....謝謝 – 2012-07-23 21:27:38