在PHP中,我有以下reqular表達:正則表達式替換
$regexp = "/^([-a-z0-9.,[email protected]'?_-\s])+$/i";
我試着去驗證我的網站上的聯繫方式(特別是消息字段),以確保沒有討厭的代碼已被輸入。我遇到的問題是我需要允許某些正常的標點符號和字符,但是我擔心它們可能會被用於插入惡意代碼。
對於任何不服從上述表達式的字符,我想將其替換以使其安全。兩個問題:
- 如何更換?
- 我應該用什麼替換角色?例如,我不允許括號
()
。最好的做法是將其替換爲"(" ")"
或\(\)
?
編輯
的數據將被髮送到電子郵件地址,並保存到數據庫
爲什麼你擔心聯繫表單中的惡意代碼?信息在哪裏去?另一個網站?你的郵件?你可能會過度這樣做。 –
根據您使用它的位置轉移數據。如果插入到數據庫中,請使用PDO或正確的* _escape函數。在網站上輸出時,請使用htmlspecialchars和urlencode。在shell環境中使用時,escapeshellcmd/escapeshellarg。等等...請參閱問題[»用PHP清理用戶輸入的最佳方法是什麼?](http://stackoverflow.com/q/129677/112968) – knittl
這一切都取決於正在處理的數據。如果它被輸出到瀏覽器,插入數據庫,通過一些命令行運行,都需要不同的衛生手段。 –