我想让用户提供自己的正则表达式来搜索我提供的数据。我只关注浏览器环境,无论是网页还是浏览器扩展程序(我的想法是,这无关紧要)。
根据我所读的内容,用户提供的正则表达式最主要的问题是引发DoS非常容易。在我的情况下,有问题的用户只会自己做DoS(这对我来说不是太大的问题,当然,我会提供所有必要的警告)。
我要避免或预防的是通常的用户无知攻击-用户从他人那里获得“建议”作为输入内容。想一想非常常见的“如果您输入密码,Facebook会显示黑色dost”或当打开浏览器开发控制台时的常见警告。
我最大的担心是在浏览器扩展的上下文中进行代码注入,在这种情况下,可以访问或操作其他选项卡(假设扩展具有权限-在此假设最坏的情况)。有什么办法可以在Javascript中实现?
更新以澄清:
目标受众是对正则表达式感到满意的高级用户,但我所关心的是对开发不太熟悉的人,可以通过简单的“打开此页面/安装此附加组件”来定位。
输入的表达式将保存在本地存储或附加的保存机制中。总是客户端。如果浏览器由多个用户共享,那么这里就是一个载体。想一想一个顽皮的孙子正在更改其grampa的noscript设置。
表达式不会在URL中传递。
用例
网站提供URL列表以及用户感兴趣的一些数据。我希望用户不仅可以通过子字符串,而且还可以使用正则表达式来过滤列表(从技术上讲,URL是键)。例如http(s?):
用于在搜索中包含http和https。