有一百万个Q&A解释了类似的选项FILTER_FLAG_STRIP_LOW,但是FILTER_SANITIZE_STRING它本身做了什么,没有任何选择?它只是过滤标签吗?
如何检测(使用正则表达式或启发式方法)一个文本字符串中的网站链接,例如注释?
目的是防止垃圾邮件.HTML被剥离,所以我需要检测复制和粘贴的邀请. 垃圾邮件发送者发布链接应该不经济,因为大多数用户无法成功访问该页面.我想要有关最佳实践的建议,参考或讨论.
一些目标:
http://some-fqdn/some/valid/path.ext)http://前缀(即有效的FQDN +有效的HTTP路径)当然,我阻止垃圾邮件,但可以使用相同的过程来自动链接文本.
以下是我在想的一些事情.
www .example.com"吗?普通用户是否知道自己删除空间,或者做任何浏览器"做什么意思"并为你剥离它?我已经阅读了这些内容,现在它们已在此处记录,因此您可以根据需要参考这些问题中的正则表达式.
哇,我在这里列出了一些非常好的启发式方法!对我来说,最好的砰砰声是以下综合:
这应该使垃圾邮件发送者的CPM足够低,以满足我的需求; "旗帜不合适"的用户反馈应该抓住其他任何东西.列出的其他解决方案也非常有用:
我有一个包含很多变量的表单,然后发送一封电子邮件,而不是$_POST用filter_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()转义输入.没有准备好的陈述等等.你认为我应该做什么吗?再次感谢!
这是一个常见的问题,我希望它已经彻底解决了我.
在我正在为客户端做的系统中,我们希望从不受信任的来源(HTML格式的电子邮件和HTML文件)接受HTML,清理它以使其没有任何脚本,指向外部资源的链接以及其他安全性/等等 问题; 然后安全地显示它,同时不丢失基本格式.例如,就像电子邮件客户端使用HTML格式的电子邮件一样,但理想情况下不会重复在该领域中已经发生的347,821错误(到目前为止).:-)
目标是最终通过iframe我们自己的Web界面或通过.Net Windows窗体应用程序中的WebBrowser类(这似乎不安全,可能不那么)向内部用户显示我们感觉舒适的东西,以下示例.
我们认识到其中一些可能会破坏文本的显示; 没关系.
我们将在接收时清理HTML并存储已清理的版本(不要担心存储部分 - SQL注入等 - 我们已经覆盖了这一点).
该软件需要在Windows Server上运行.COM DLL或.Net程序集首选.FOSS显然是首选,但不是交易破坏者.
到目前为止我发现了什么:
你会为这项任务推荐什么?以上之一?别的什么?
例如,我们想删除以下内容:
script 分子link,img以及与外部资源相关的此类元素(可能会替换img为"[图像已删除]"或其中一些此类文本)embed,object,applet,audio,video,并尝试创建对象的其他标签onclick 和类似的DOM0事件处理程序脚本代码href关于a触发代码的元素(即使是我们认为可以接受的链接,我们也可能会变成用户必须有意复制并粘贴到浏览器中的明文).例如,这个HTML:
<!DOCTYPE html>
<html>
<head>
<title>Example</title>
<link rel="stylesheet" type="text/css" …Run Code Online (Sandbox Code Playgroud) 你如何通过PHP清理$ _GET -variables中的数据?
我在GET中只消除了一个变量strip_tags.我不确定是否应该清理所有内容,因为上次将数据放入Postgres时,问题最容易通过使用来解决pg_prepare.
是否有一个通用的"表单清理程序",我可以用来确保从提交的表单中删除所有的html /脚本?form.clean()似乎没有做任何事情 - html标签仍然在cleaning_data中.或者实际上手动执行此操作(并覆盖表单的clean()方法)是我唯一的选择?
问候,我希望我的小程序安全,以便潜在的恶意用户无法查看服务器上的敏感文件.
$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'这样的输入会有麻烦,但想知道我应该期待什么其他有意义的输入以及如何防止他们.
我已经阅读了很多关于此的内容,并且知道这里有很多相关的问题,但是我找不到关于如何对一切进行消毒的明确指南.一种选择是对插入进行清理,例如我的模型中有以下内容
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)在视图中显示数据时进行清理.我应该对每一个领域以及插入的所有观点进行消毒吗?必须在任何地方手动执行此操作似乎并不是很困难
谢谢你的帮助
我有一个例程,可以将文件转换为不同的格式并保存.原始数据文件已编号,但我的例程根据原始文件中的内部名称为输出提供文件名.
我试图在一个完整的目录上批量运行它,它工作正常,直到我点击一个内部名称中有斜杠的文件.哎呀!如果它在这里,它可以很容易地在其他文件上.是否存在RTL(或WinAPI)例程,它将清理字符串并删除无效符号,以便可以安全地用作文件名?
我需要让用户将Markdown内容输入我的Web应用程序,该应用程序具有Python后端.我不想不必要地限制他们的条目(例如,不允许任何 HTML,这违背了Markdown的精神和规范),但显然我需要防止跨站点脚本(XSS)攻击.
我不能成为第一个有这个问题的人,但是没有看到所有关键词"python","Markdown"和"XSS"的任何SO问题,所以这里就是这样.
使用Python库处理Markdown并防止XSS攻击的最佳实践方法是什么?(支持PHP Markdown Extra语法的奖励点.)