簡體   English   中英

驗證用戶輸入或���������

[英]Validation of user input or ���������

我們讓用戶從單個文本輸入中搜索數據庫,並且我在過濾一些用戶提供的字符串時遇到了困難。

例如,如果用戶提交:

��������� lcd SONY

(注意?)我需要取消搜索。

我包括上面的字符串的base64編碼版本,以便它運行:

print(base64_decode("1MfLxc/RwdPHIGxjZCBTT05Z"));

我之前忽略了這些輸入但是現在(我不知道為什么)只是意識到mysql數據庫查詢幾乎永遠執行所以現在這是高優先級。

另一個強調我們使用utf-8和mb_detect_encoding的例子沒有多大幫助:

print(base64_decode("zqDOm8+Fzr3PhM63z4HOuc6/IM+Bzr/Phc+HzyU="));
ΠΛυντηριο ρουχ�%

所以:

  • 如何檢測/過濾這些輸入?
  • 這個輸入是如何生成的?

您不應該這樣做,雖然如果您真的想要過濾(我不推薦),請檢查字母數字以及“ - 。;”等。

您可以使用其中一些功能來幫助您完成過濾過程。

http://www.php.net/manual/en/function.ctype-alnum.php

如果在創建與mysql的連接后執行這些查詢,它應該處理utf-8輸入並且結果很好而不會吐出?

mysql_query("SET character_set_client=utf8", $mysqlConn);
mysql_query("SET character_set_connection=utf8", $mysqlConn);
mysql_query("SET character_set_results=utf8", $mysqlConn);

(假設數據庫設置為utf-8,你不介意不過濾它們,如果它們沒有變成?)

(也假設你使用的是mysql,其他dbms可能有類似的功能)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM