问题标签 [sanitization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
12923 浏览

security - 在经典asp中清理输入的好方法

我必须更新工作中的旧项目。尽管我熟悉 php 脚本,但我对经典的 asp 没有任何经验。

  • 有什么我应该使用的功能吗?
  • 能给我提供一些基本保护的好功能吗?
  • asp中是否有类似参数化查询的东西?

谢谢!

0 投票
3 回答
643 浏览

java - 正则表达式阻止字符串中的所有 <

我正在尝试创建一个正则表达式来阻止所有字符串,除非与 <任何人都可以为此建议一个正则表达式吗?我将与.><select>.javax.util.Pattern

我正在尝试编写一个解决方案来阻止通过请求和 URL 进行的注入攻击和 XSS 尝试。为此,我将阻止特殊字符和字符序列,但有一些例外。一个例外是,我必须允许<select>(在它们之间有选择的尖括号),因为在某些情况下,它会被合法地传递到请求中。但是必须阻止所有其他尖括号组合。这就是我提出问题的原因。

0 投票
3 回答
5533 浏览

php - 如何确保文件路径在给定的子目录中?

我想确保通过查询字符串设置的文件路径不会超出所需的子目录。现在,我正在检查:

  1. 路径不以“ /”开头,防止用户给出绝对路径。
  2. 该路径不包含“ ..”,以防止用户提供位于所需子目录之外的路径。
  3. 路径不包含“ :”,防止使用url(即“ http://”、“ ftp://”等)。如果我曾经在 Windows 服务器上运行这个脚本(不太可能),这也会阻止以驱动器说明符(即“ C:\”)开头的绝对路径。注意:我知道冒号是 Unix 文件名中的有效字符,但我永远不会在文件名中使用它。
  4. 路径不以“ \”开头。以防万一我改变主意在 Windows 服务器上运行,这可以防止指定 Windows 网络路径(即“ \\someserver\someshare”)。同样,我知道反斜杠是有效的 Unix 文件名字符,但我也不会在任何文件名中使用它。

这些检查是否足够?

背景

我有一个 PHP 脚本,它(通过查询字符串)获取要显示给用户的示例源文件的路径。所以我可能会给他们一个“ view_sample.php?path=accounting_app/report_view.php”或“ view_sample.php?path=ajax_demo/get_info.js”之类的链接。

该脚本看起来基本上是这样的:

我担心的是恶意用户会看到 url 并尝试执行类似“ view_sample.php?path=../../database/connection_info.php”的操作并获得对不在“sample”目录中的文件的访问权限。

我上面定义的四项检查(将在path_is_valid()函数中实现)是否足以锁定恶意用户?(另外,我认为检查 1、3 和 4 基本上是无关紧要的,因为我预先设置了一个相对路径,但如果我不这样做,检查就足够了吗?)

0 投票
2 回答
788 浏览

.net - .NET 中的 RSS 描述 html 清理

我想编写一个使用 RSS 的应用程序。我希望能够将 RSS 提要的项目描述中的一些项目显示为 HTML,例如图像、链接、br 等。但是,我不希望任何嵌入式脚本运行、不守规矩的 css 元素等。我也不想重新发明轮子。他们的任何库是否只删除了正确级别的 HTML?

我遇到的问题是我正在从 phpBB 生成一个 RSS 提要,所以这些帖子确实已经有 br 和 a (link) 标签。但是,用户可以在帖子中粘贴脚本标签,它会被正确编码以在页面上显示为文本。

但是,当我在 RSS 阅读器中查看帖子时,帖子中的所有 html 都被编码为 < 和 >...等。这模糊了 br 标签和(小于)脚本(大于)标签之间的区别,因为它们都出现在 & lt ; 和>

我觉得这应该更容易,我只是错过了一些明显的东西......我希望。

0 投票
2 回答
8205 浏览

php - 在将数据输出回文本区域时,如何正确清理从文本区域接收的数据?

用户将在文本区域中输入文本。然后将其直接插入到 mySQL 数据库中。我在上面使用了 trim、htmlentities、mysql_real_escape_string 并且我启用了魔术引号。将该数据输出回文本区域时,我应该如何对其进行清理?

谢谢你的帮助。我从来没有太确定这样做的正确方法......

0 投票
4 回答
2430 浏览

php - 从传入字符串中删除所有垃圾的例程?

有时,当用户将数据复制并粘贴到输入表单中时,我们会得到如下字符:

没有,“用于开头引号和“用于结尾引号等...

我使用此例程来清理 Web 表单上的大多数输入(我前段时间写过,但也在寻找改进):

我真的很想避免上面提到的字符被存储在数据库中,我是否需要在我的清理程序中添加一些正则表达式替换?

谢谢,

-尼古拉斯

0 投票
2 回答
7934 浏览

php - 为sql插入转义字符串的最佳方法?

为 sql 插入、更新转义字符串的最佳方法是什么?

我想允许特殊字符,包括 ' 和 "。在插入语句中使用它之前搜索和替换每个字符串的最佳方法是什么?

谢谢

重复:防御mysql注入和跨站点脚本的最佳方法

0 投票
2 回答
1508 浏览

windows - 如何从Windows的日志文件中删除密码?

我有一个部署脚本(.bat),其中一部分需要调用其他程序并在命令行上发送密码。我将部署脚本的输出记录到文件中。问题是密码也被记录了。我需要一种清理此日志文件的方法。

一种方法是不回显包含密码的行,但我更愿意用另一个字符串替换密码。

这是在服务器(Windows 2008)上完成的,所以我不能只安装 cygwin 等。我认为 Windows 的“查找”命令可能会有所帮助,但它所能做的最好的事情是用“/v”选项省略整行。

UPD:做了一些研究,我认为 PowerShell 是要走的路。密码在环境变量中,所以需要弄清楚如何读取它并替换它。

0 投票
13 回答
8221 浏览

language-agnostic - 检测文本字符串中的(淘气或漂亮)URL 或链接

如何检测(使用正则表达式或启发式)文本字符串(如评论)中的网站链接?

目的是防止垃圾邮件。HTML 被剥离,所以我需要检测复制和粘贴的邀请。 垃圾邮件发送者发布链接应该不经济,因为大多数用户无法成功访问该页面。我想要关于最佳实践的建议、参考或讨论。

一些目标:

  • 像格式良好的 URL 一样容易实现的目标 ( http://some-fqdn/some/valid/path.ext)
  • URL 但没有http://前缀(即有效的 FQDN + 有效的 HTTP 路径)
  • 任何其他有趣的事情

当然,我正在阻止垃圾邮件,但是可以使用相同的过程来自动链接文本。

想法

这是我在想的一些事情。

  • 内容是母语散文,所以我可以在检测中触发快乐
  • 我应该先去掉所有空格来捕捉“ www .example.com”吗?普通用户会知道自己删除空间,还是让任何浏览器“按我的意思做”并为您剥离它?
  • 也许多次传球是一个更好的策略,扫描:
    • 格式正确的 URL
    • 所有非空格后跟“。” 后跟任何有效的 TLD
    • 还要别的吗?

相关问题

我已经阅读了这些内容,它们现在记录在此处,因此您可以根据需要在这些问题中引用正则表达式。

更新和总结

哇,我在这里列出了一些非常好的启发式方法!对我来说,最划算的是以下几点的综合:

  1. @Jon Bright 的 TLD 检测技术(一个很好的防御瓶颈)
  2. 对于那些可疑的字符串,按照@capar 将点替换为点状字符
  3. @Sharkey 的下标 · 是一个不错的点状字符。(即“ · ”)。· 也是一个单词边界,因此很难随意复制和粘贴。

这应该使垃圾邮件发送者的每千次展示费用足够低以满足我的需求;“标记为不适当”的用户反馈应该可以捕捉到其他任何东西。列出的其他解决方案也非常有用:

  • 去掉所有虚线四边形(@Sharkey 对他自己的回答的评论)
  • @Sporkmonger 对客户端 Javascript 的要求,它将所需的隐藏字段插入到表单中。
  • ping URL 服务器端以确定它是否是一个网站。(也许我可以通过 SpamAssassin 或其他贝叶斯过滤器按照@Nathan 运行 HTML ..)
  • 查看 Chrome 智能地址栏的来源,看看 Google 使用了哪些巧妙的技巧
  • 调用 OWASP AntiSAMY 或其他 Web 服务进行垃圾邮件/恶意软件检测。
0 投票
5 回答
3853 浏览

c++ - C++ 中的 HTML 清理

是否有任何可用的 C++(或者可能是 C)函数/类/库仅用于清理可能包含 HTML 的字符串?

我发现很多源代码用于在 C# 或 Web 应用程序中更常用的其他语言中进行清理,但在 C++ 中没有。

如果我找不到任何可用的功能,我会尝试实现我自己的功能,但我认为经过大量测试的解决方案会好得多。

编辑>我的需求更精确:

我在我的 C++ 应用程序中从键盘获取文本输入。然后我需要在将其用作 javascript 函数调用中的参数之前对其进行清理。该javascript在加载的html页面中运行,该页面自动呈现(通过Chromium)在我通过库(Navi)显示的纹理中。因此,我使用的 javascript 函数将简单地获取给定的文本,在文本周围放置 P 标签并将其注入到这样的 div 中:

我需要在将文本发送到网页之前对其进行清理,无论是用于此功能还是其他功能。它只需要在输入 Chromium 之前进行消毒。