Kon*_*ski 6 c# regex sanitization user-input code-injection
如何防止我称之为"正则表达注射"的东西?
我正在使用正则表达式来解析可能看起来像的字符串 - 其中一个示例 -
大小: 10,数量: 20
编写正则表达式以捕获"10"和"20"本身并不难.但是,"大小"和"数量"是可自定义的 - 用户可以选择其他一些单词.
所以我做的是:
var pattern = String.Format(
@"{0}[ \t]*(?<size>{1}|\d*)[ \t]*:[ \t]*{2}:[ \t]*(?<quantity>[\d]*)",
sizeSign,
univerSizeAbbrev,
qtySign);
Run Code Online (Sandbox Code Playgroud)
但是我如何'清理'sizeSign,qtySign(或者univerSizeAbbrev)呢?
正则表达式没有像SQL那样的过程参数(?),所以我如何确保sizeSign和qtySign始终被视为文字,无论它们是什么.
spe*_*der 10
使用Regex.Escape:
通过用它们的转义码替换它们来转义一组最小字符(\,*,+,?,|,{,[,(,),^,$ ,.,#和空格).这指示正则表达式引擎按字面解释这些字符而不是元字符.
| 归档时间: |
|
| 查看次数: |
3382 次 |
| 最近记录: |