标签: sanitization

FILTER_SANITIZE_STRING做了什么?

有一百万个Q&A解释了类似的选项FILTER_FLAG_STRIP_LOW,但是FILTER_SANITIZE_STRING它本身做了什么,没有任何选择?它只是过滤标签吗?

php sanitization

39
推荐指数
2
解决办法
4万
查看次数

检测文本字符串中的(顽皮或漂亮)URL或链接

如何检测(使用正则表达式或启发式方法)一个文本字符串中的网站链接,例如注释?

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

一些目标:

  • 结构良好的URL(http://some-fqdn/some/valid/path.ext)
  • URL但没有http://前缀(即有效的FQDN +有效的HTTP路径)
  • 任何其他有趣的业务

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

思路

以下是我在想的一些事情.

  • 内容是母语散文,所以我可以在检测中触发快乐
  • 我应该首先删除所有空格,以便抓住" www .example.com"吗?普通用户是否知道自己删除空间,或者做任何浏览器"做什么意思"并为你剥离它?
  • 也许多次通过是更好的策略,扫描:
    • 格式良好的网址
    • 所有非空格后跟'.' 随后是任何有效的TLD
    • 还要别的吗?

相关问题

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

更新和摘要

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

  1. @Jon Bright检测TLD的技术(一个很好的防御性阻塞点)
  2. 对于那些可疑的字符串,请根据@capar将点替换为带点的字符
  3. 一个好看的字符是@ Sharkey的下标· (即" · ").· 也是一个单词边界,因此随便复制和粘贴更难.

这应该使垃圾邮件发送者的CPM足够低,以满足我的需求; "旗帜不合适"的用户反馈应该抓住其他任何东西.列出的其他解决方案也非常有用:

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

language-agnostic url sanitization spam-prevention

37
推荐指数
4
解决办法
7010
查看次数

什么是在PHP中清理整个$ _POST数组的好方法?

我有一个包含很多变量的表单,然后发送一封电子邮件,而不是$_POSTfilter_var($_POST['var'], FILTER_SANITIZE_STRING); 一个更简单的代码片段来清理每个值.我想出了下面的内容,这似乎有效,因为我相信默认操作是FILTER_SANITIZE_STRING,但我只是想知道人们的意见是什么,如果这不是好的做法,也许你可以告诉我为什么?$_POST然后将这些值单独嵌入到新变量中,因此我只会在开始时使用array_map来清理所有内容......

$_POST = array_map('filter_var', $_POST);
Run Code Online (Sandbox Code Playgroud)

感谢您的回复,为您提供更多信息,基本上:

我在一个表单中有20-30个输入字段被捕获,然后数据显示给用户检查输入,然后对变量进行清理,然后向用户发送电子邮件,最后将详细信息输入到数据库中.

目前我正在使用上面的array_map函数清理,以及在发送电子邮件之前使用电子邮件地址上的FILTER_SANITIZE_EMAIL,然后在插入数据库之前使用mysql_real_escape_string()转义输入.没有准备好的陈述等等.你认为我应该做什么吗?再次感谢!

php arrays sanitization

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

在保留基本格式的同时,我可以使用什么来清理收到的HTML?

这是一个常见的问题,我希望它已经彻底解决了我.

在我正在为客户端做的系统中,我们希望从不受信任的来源(HTML格式的电子邮件和HTML文件)接受HTML,清理它以使其没有任何脚本,指向外部资源的链接以及其他安全性/等等 问题; 然后安全地显示它,同时不丢失基本格式.例如,就像电子邮件客户端使用HTML格式的电子邮件一样,但理想情况下不会重复在该领域中已经发生的347,821错误(到目前为止).:-)

目标是最终通过iframe我们自己的Web界面或通过.Net Windows窗体应用程序中的WebBrowser类(这似乎不安全,可能不那么)向内部用户显示我们感觉舒适的东西,以下示例.

我们认识到其中一些可能会破坏文本的显示; 没关系.

我们将在接收时清理HTML并存储已清理的版本(不要担心存储部分 - SQL注入等 - 我们已经覆盖了这一点).

该软件需要在Windows Server上运行.COM DLL或.Net程序集首选.FOSS显然是首选,但不是交易破坏者.

到目前为止我发现了什么:

  • AntiSamy.Net项目 (但它似乎不再是正在积极开发中,是在主后面的一年-活跃- AntiSamy Java项目).
  • 一些代码来自我们自己的杰夫阿特伍德,大约三年前(哎呀,我不知道他在做什么......).
  • HTML敏捷性包 (通过上面的AntiSamy.Net项目中使用的),这会给我一个健壮的分析器; 然后我可以实现我自己的逻辑来遍历生成的DOM并过滤掉我没有列入白名单的任何内容.敏捷包看起来真的很棒,但我依靠自己的白名单,而不是重复使用某人已经发明的轮子,所以这是对它的反对.
  • 微软反XSS库

你会为这项任务推荐什么?以上之一?别的什么?


例如,我们想删除以下内容:

  • script 分子
  • link,img以及与外部资源相关的此类元素(可能会替换img为"[图像已删除]"或其中一些此类文本)
  • embed,object,applet,audio,video,并尝试创建对象的其他标签
  • onclick 和类似的DOM0事件处理程序脚本代码
  • href关于a触发代码的元素(即使是我们认为可以接受的链接,我们也可能会变成用户必须有意复制并粘贴到浏览器中的明文).
  • __________ (我没有想到的722件事是我想要利用已经存在的东西的原因)

例如,这个HTML:

<!DOCTYPE html>
<html>
<head>
<title>Example</title>
<link rel="stylesheet" type="text/css" …
Run Code Online (Sandbox Code Playgroud)

.net html sanitization html-sanitizing

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

通过PHP清理GET中的用户数据

你如何通过PHP清理$ _GET -variables中的数据?

我在GET中只消除了一个变量strip_tags.我不确定是否应该清理所有内容,因为上次将数据放入Postgres时,问题最容易通过使用来解决pg_prepare.

php sanitization get

30
推荐指数
2
解决办法
6万
查看次数

在提交的表单数据中清理HTML

是否有一个通用的"表单清理程序",我可以用来确保从提交的表单中删除所有的html /脚本?form.clean()似乎没有做任何事情 - html标签仍然在cleaning_data中.或者实际上手动执行此操作(并覆盖表单的clean()方法)是我唯一的选择?

python forms django sanitization

29
推荐指数
3
解决办法
2万
查看次数

在PHP中清理文件路径

问候,我希望我的小程序安全,以便潜在的恶意用户无法查看服务器上的敏感文件.

    $path = "/home/gsmcms/public_html/central/app/webroot/{$_GET['file']}";


    if(file_exists($path)) {
        echo file_get_contents($path);
    } else {
        header('HTTP/1.1 404 Not Found');
    }
Run Code Online (Sandbox Code Playgroud)

在我的脑海中,我知道像'../../../../../../etc/passwd'这样的输入会有麻烦,但想知道我应该期待什么其他有意义的输入以及如何防止他们.

php security sanitization

27
推荐指数
5
解决办法
2万
查看次数

在rails中清理用户输入的最佳方法

我已经阅读了很多关于此的内容,并且知道这里有很多相关的问题,但是我找不到关于如何对一切进行消毒的明确指南.一种选择是对插入进行清理,例如我的模型中有以下内容

before_validation :sanitize_content, :on => :create
def sanitize_content
  self.content = ActionController::Base.helpers.sanitize(self.content)
end
Run Code Online (Sandbox Code Playgroud)

我是否需要在每个模型的每个字段上运行它?我猜测:on =>:create也应该删除,以便在更新时运行?

另一种选择是使用simple_format或.html_safe或sanitize(fieldname)在视图中显示数据时进行清理.我应该对每一个领域以及插入的所有观点进行消毒吗?必须在任何地方手动执行此操作似乎并不是很困难

谢谢你的帮助

sanitization ruby-on-rails-4

27
推荐指数
2
解决办法
3万
查看次数

如何清理字符串以用作文件名?

我有一个例程,可以将文件转换为不同的格式并保存.原始数据文件已编号,但我的例程根据原始文件中的内部名称为输出提供文件名.

我试图在一个完整的目录上批量运行它,它工作正常,直到我点击一个内部名称中有斜杠的文件.哎呀!如果它在这里,它可以很容易地在其他文件上.是否存在RTL(或WinAPI)例程,它将清理字符串并删除无效符号,以便可以安全地用作文件名?

delphi validation filenames sanitization

26
推荐指数
6
解决办法
2万
查看次数

在Python中允许Markdown,同时防止XSS攻击的最佳做法?

我需要让用户将Markdown内容输入我的Web应用程序,该应用程序具有Python后端.我不想不必要地限制他们的条目(例如,不允许任何 HTML,这违背了Markdown的精神和规范),但显然我需要防止跨站点脚本(XSS)攻击.

我不能成为第一个有这个问题的人,但是没有看到所有关键词"python","Markdown"和"XSS"的任何SO问题,所以这里就是这样.

使用Python库处理Markdown并防止XSS攻击的最佳实践方法是什么?(支持PHP Markdown Extra语法的奖励点.)

python xss markdown sanitization

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