相关疑难解决方法(0)

如何将HTML标记显示为纯文本

我的网站上有一个允许HTML的输入表单,我正在尝试添加有关HTML标记使用的说明.我想要的文字

<strong>Look just like this line - so then know how to type it</strong>
Run Code Online (Sandbox Code Playgroud)

但到目前为止,我得到的是:

看起来就像这一行 - 所以然后知道如何键入它

如何显示标签以便人们知道要键入什么?

html php

195
推荐指数
7
解决办法
37万
查看次数

正则表达式从字符串中删除HTML标记

可能重复:
正则表达式以删除HTML标记

是否有一个表达式可以获取两个HTML标记之间的值?

鉴于这种:

<td class="played">0</td>
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个表达式,它将返回0,剥离<td>标签.

html regex

73
推荐指数
3
解决办法
24万
查看次数

如何防止用户生成的HTML中的Javascript注入攻击

我正在保存用户提交的HTML(在数据库中).我必须防止Javascript注入攻击.我见过的最有害的是style ="expression(...)"中的脚本.

除此之外,有效用户内容的公平金额将包含特殊字符和XML结构,所以我想如果可能的话,避免白名单的做法.(列出每个允许的HTML元素和属性).

Javascript攻击字符串的示例是:

1)

"你好,<dog>元素有一个<script> alert("bad!")</ script>问题......"

2)

"嗨,这个<b style ="width:表达式(警告('坏!'))">狗</ b>是黑色的."

有没有办法防止这样的Javascript,并保持其余的完整?

到目前为止,我唯一的解决方案是使用正则表达式来删除某些模式.它解决了案例1,但不是案例2.

编辑: 对不起,忘了提及环境 - 它本质上是MS堆栈:

  • SQL Server 2005
  • C#3.5(ASP.NET)
  • Javascript(显然)和jQuery.

我希望阻塞点成为ASP.NET层 - 任何人都可以制作错误的HTTP请求.

编辑2:

感谢大家的链接.假设我可以定义我的列表(他的内容将包含许多数学和编程结构,因此白名单会非常烦人)我仍然有一个问题:

什么样的解析器允许我删除"坏"部分?坏部分可能是一个完整的元素,但那么属于这些属性的脚本呢.我无法删除<a hrefs> willy-nilly.

html javascript regex parsing code-injection

52
推荐指数
3
解决办法
8万
查看次数

正则表达式删除HTML标记

我使用以下Regular Expresion从字符串中删除html标记.它的工作原理除了我留下结束标签.如果我试图删除:<a href="blah">blah</a>它离开了<a/>.

我根本不知道正则表达式语法,并且通过这种方式摸索.拥有RegEx知识的人可以为我提供一个可行的模式.

这是我的代码:

  string sPattern = @"<\/?!?(img|a)[^>]*>";
  Regex rgx = new Regex(sPattern);
  Match m = rgx.Match(sSummary);
  string sResult = "";
  if (m.Success)
   sResult = rgx.Replace(sSummary, "", 1);
Run Code Online (Sandbox Code Playgroud)

我希望删除<a><img>标签的第一次出现.

.net c# regex

12
推荐指数
3
解决办法
4万
查看次数

Javascript XSS预防

有一个Node.js项目可以清理数据,还有一个用于JavaScript的OWASP库,用于处理清理以防止XSS.

我一直在对这些库进行基准测试,它们非常密集,也许是一种矫枉过正,我的应用程序不需要任何动态HTML(由用户提交,bbtags或者什么都不提供,根本不需要),所以为什么不这样做:

  1. 禁用" <"和" >"字符,不要替换它们或任何东西,只需禁用它们,如果用户提交这些字符,请向它们发出警告,禁用这些字符(客户端和服务器端验证)
  2. & => &amp;
  3. " => &quot;
  4. ' => &#x27;
  5. / => /
  6. 编码提交的URL(GET参数等)
  7. 由于我的应用程序使用HTML5 PushState并且后端与前端完全分离,因此涵盖了基于DOM的XSS.

这足以保护自己,正如我所说,我的应用程序不需要用户提交任何HTML,所以我根本不需要<>标签.

感谢所有反馈,这就是我现在使用的:

var pattern = /<(.*)>/;

function hasHtmlTags(string) {
    return pattern.test(string);
};

if (hasHtmlTags(userData)) {
    // Do something?
} else {
    // Create entity.
}
Run Code Online (Sandbox Code Playgroud)

因此,用户仍然可以使用他们的表情符号<等等,并且只有在找到<和>的组合时才会触发该函数.所以没有昂贵的正则表达式等,只需禁用<和>组合,我们应该没问题.

javascript security xss sanitization node.js

5
推荐指数
3
解决办法
1万
查看次数

HTML/JS 注入攻击的最简单检查方法是什么?

我的 Javascript 代码旨在获取一些不受信任的字符串变量并将其呈现在 DOM 中。它将被插入到格式良好的 HTML 中的已知点。当且仅当字符串不可能包含 HTML 元素时,它才会被插入。脚本执行是主要的担忧,但任何类型的可能被利用的注入都值得关注。

如果字符串看起来不安全,我就不能在 DOM 中呈现它。不需要对可能不安全的字符串进行消毒或做任何事情。事实上,我想避免使用库,而更喜欢不需要维护的简单检查。我还看到了向 DOM 添加文本节点的解决方案,但我只想说这对我正在做的事情不起作用。

我认为测试可能像“字符串是否包含 <”一样简单:

function isItSafe(text) { return text.indexOf('<') === -1; }

但也许这太天真了。特别是,当某些漏洞利用依赖于某个浏览器如何响应无效 HTML 时。可以在不使用“<”的情况下创建注入漏洞吗?如果是这样,您认为最低限度的检查需要是什么?

html javascript security xss

1
推荐指数
1
解决办法
2693
查看次数

标签 统计

html ×4

javascript ×3

regex ×3

security ×2

xss ×2

.net ×1

c# ×1

code-injection ×1

node.js ×1

parsing ×1

php ×1

sanitization ×1