簡體   English   中英

使用用戶的RegEx是否安全?

[英]Is it safe to use user's RegEx?

我想在我的網站上添加一項功能,讓用戶使用RegEx搜索文本。 但是,讓用戶做這樣的事情是否安全?

preg_match('/' . $user_input_regex . '/', $subject);

此代碼可能存在攻擊,稱為ReDoS攻擊 (正則表達式拒絕服務)。

正則表達式拒絕服務(ReDoS)是一種拒絕服務攻擊,它利用了大多數正則表達式實現可能達到導致它們工作非常緩慢(與輸入大小呈指數關聯)的極端情況的事實。 然后,攻擊者可以使用正則表達式使程序進入這些極端情況,然后掛起很長時間。

特別是使用preg_match存在一個已知的問題 ,可能導致PHP分段錯誤。

所以答案是否定的,因為這些問題不安全。

安全方面,您永遠不應該信任用戶輸入,因此它取決於您對輸入的處理方式。 在您給定的情況下,您應該至少轉義用戶輸入中使用的分隔符(反斜杠)以確保正則表達式正常工作。

暫無
暫無

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

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