我正在保存用户提交的HTML(在数据库中)。 我必须防止Javascript注入攻击。 我所看到的最有害的是一个style =“expression(…)”的脚本。 除此之外,相当数量的有效用户内容将包括特殊字符和XML结构,因此如果可能的话,我想避免使用白名单方法。 (列出每个允许的HTML元素和属性)。 Javascript攻击string的例子是: 1) “你好,我对<dog>元素有一个<script>警告(”坏!“)</ script>问题…” 2) “嗨,这个<b style =”width:expression式(alert('bad!'))“>狗</ b>是黑色的。 有没有办法来防止这样的Javascript,并保持完整的rest? 我迄今唯一的解决scheme是使用正则expression式来删除某些模式。 它解决了案例1,但不是案例2。 编辑:对不起,忘了提及环境 – 它本质上是MS堆栈: SQL Server 2005 C#3.5(ASP.NET) Javascript(显然)和jQuery。 我想chopppoint是ASP.NET层 – 任何人都可以制作一个错误的HTTP请求。 编辑2: 感谢大家的链接。 假设我可以定义我的列表(他的内容将包括许多math和编程结构,所以白名单将是非常恼人的)我仍然有一个问题在这里: 什么样的parsing器可以让我删除“坏”的部分? 坏的部分可能是一个完整的元素,但是那些驻留在属性中的脚本又如何? 我无法删除<a hrefs> willy-nilly。
我有以下线路, typeName="ABC:xxxxx;"; 我需要取ABC字, 我写了下面的代码片断, Pattern pattern4=Pattern.compile("(.*):"); matcher=pattern4.matcher(typeName); String nameStr=""; if(matcher.find()) { nameStr=matcher.group(1); } 所以,如果我把group(0)我得到了ABC:但是如果我把group(1)它是ABC ,所以我想知道 这个0和1是什么意思? 如果有人能用好的例子来解释我,那会更好。 正则expression式模式包含一个:其中,为什么group(1)结果省略了? 组1是否检测括号内的所有单词? 所以,如果我再加两个括号,如\\s*(\d*)(.*) :那么,会有两个组? group(1)将返回(\d*)部分和group(2)返回(.*)部分? 代码片段的目的是为了澄清我的困惑。 这不是我正在处理的代码。 上面给出的代码可以使用String.split()以更简单的方式完成。
我一直在试图做一个正则expression式来匹配和replaceHTML的一部分关键字的出现: 我想匹配keyword和<strong>keyword</strong> 但<a href="someurl.html" target="_blank">keyword</a>和<a href="someur2.html">already linked keyword </a>不应匹配 我只对匹配(和replace)第一行的keyword感兴趣。 我想这个的原因是用<a href="dictionary.php?k=keyword">keyword</s>replacekeyword ,但只有keyword不在<a>标签内。 任何帮助将不胜感激!
我对正则expression式中的反斜杠感到困惑。 在正则expression式中, \有一个特殊的含义,例如\d表示十进制数字。 如果你在反斜杠前添加一个反斜杠,这个特殊的含义就会丢失。 在正则expression式中,人们可以阅读: 也许最重要的元字符是反斜杠\ 。 和Pythonstring一样,反斜线后面可以跟着各种字符来表示各种特殊的序列。 它也被用来转义所有的元字符,所以你仍然可以在模式中匹配它们; 例如,如果你需要匹配一个[或\ ,你可以在它们前面加一个反斜杠去除它们的特殊含义: \[或\\ 。 所以print(re.search('\d', '\d'))给出None因为\d匹配任何十进制数字,但\d没有。 我现在希望print(re.search('\\d', '\d'))匹配\d但答案仍然是None 。 只有print(re.search('\\\d', '\d'))作为输出<_sre.SRE_Match object; span=(0, 2), match='\\d'> <_sre.SRE_Match object; span=(0, 2), match='\\d'> 。 有人有解释吗?
您好我想从我的URL使用JavaScript提取查询string,我想做一个不区分大小写的比较查询string名称。 这是我在做什么: var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href); if (!results) { return 0; } return results[1] || 0; 但是上面的代码做了区分大小写的search。 我试过/<regex>/i但它没有帮助。 任何想法如何能够实现?
我有格式良好的XML文件到stringvariables。 我想使用preg_replace来为每个xml标签添加一个定义的属性。 例如replace: <tag1> <tag2> some text </tag2> </tag1> 通过: <tag1 attr="myAttr"> <tag2 attr="myAttr"> some text </tag2> </tag1> 所以我基本上需要正则expression式来find任何开始标签和添加我的属性,但我是一个完整的正则expression式noob。
我需要一个正则expression式模式来查找HTML中的网页链接。 我首先使用@"(<a.*?>.*?</a>)"来提取链接( <a> ),但我无法从中获取href 。 我的string是: <a href="www.example.com/page.php?id=xxxx&name=yyyy" ….></a> <a href="http://www.example.com/page.php?id=xxxx&name=yyyy" ….></a> <a href="https://www.example.com/page.php?id=xxxx&name=yyyy" ….></a> <a href="www.example.com/page.php/404" ….></a> 1,2和3是有效的,我需要它们,但是4号对我来说是无效的( ?和=是必需的) 谢谢大家,但我不需要parsing<a> 。 我有一个href="abcdef"格式的链接列表。 我需要获取链接的href并过滤它,我最喜欢的url必须包含? 和=像page.php?id=5 谢谢!
在JavaScript中: "ab abc cab ab ab".replace(/\bab\b/g, "AB"); 正确给我: "AB abc cab AB AB" 当我使用utf-8字符时: "αβ αβγ γαβ αβ αβ".replace(/\bαβ\b/g, "AB"); 字边界算子似乎不工作: "αβ αβγ γαβ αβ αβ" 有没有解决这个问题?
具体来说,何时^意味着“匹配开始”,什么时候在正则expression式中意味着“不是以下”? 从维基百科的文章和其他参考文献中,我已经得出结论,这意味着前者在开头,后者在括号中使用,但是程序如何处理脱字符号在开头和括号内的情况? 什么,说,^ [bd] t $匹配?
我有响应正文中的以下JSON格式 [ { "Name" : "Prashant", "City" : "Sydney" }, { "Name" : "Yogi", "City" : "London" } ] 有什么更好的方法来检查这个数组是否有任何logging,如果是的话,给我第一个数组索引的“名称”。 我正在使用jp @ gc JSON提取器插件jMeter。 有没有可能使用插件parsing这个,或者我需要使用正则expression式吗?