目前我正在使用这种方法与jQuery解决方案,以清除可能的XSS攻击字符串.
sanitize:function(str) {
// return htmlentities(str,'ENT_QUOTES');
return $('<div></div>').text(str).html().replace(/"/gi,'"').replace(/'/gi,''');
}
Run Code Online (Sandbox Code Playgroud)
但我觉得它不够安全.我错过了什么吗?
我在这里试过phpjs项目的htmlentities:http://phpjs.org/functions/htmlentities:425 /
但它有点被窃听并返回一些额外的特殊符号.也许这是旧版本?
例如:
htmlentities('test"','ENT_QUOTES');
Run Code Online (Sandbox Code Playgroud)
生产:
test&quot;
Run Code Online (Sandbox Code Playgroud)
但应该是:
test"
Run Code Online (Sandbox Code Playgroud)
你是如何通过javascript处理的?
我有点困惑,因为看起来Django模板有可选的HTML过滤器,但这似乎是自动发生..我正在制作这个演示应用程序,用户将执行一个调用python脚本检索URL的动作,然后我想在一个新窗口中显示它...它很好,除了当显示器返回时,HTML以这种格式清理(当我查看页面源时,我看到这一点,在浏览器中它显示为常规HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml"><head><meta content="text/html; charset=utf-8" http-equiv="content-type" /><script type="text/javascript">//<![CDATA[
si_ST=new Date
Run Code Online (Sandbox Code Playgroud)
这是相同的常规HTML版本:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml"><head><meta content="text/html; charset=utf-8" http-equiv="content-type" /><script type="text/javascript">//<![CDATA[ si_ST=new Date //]]></script><script type="text/javascript">//<
显然我的html_safe调用没有做任何事情.
背景:
我正在使用Twitter Bootstrap以及Font Awesome,我实际上是在尝试实现一个带有图标的提交按钮.
如何判断"sanitize-html"实际删除html标签(仅保留其中的内容)?目前,如果我将它设置为保留div部分,在输出中它也写入<div>some content</div>- 我只想要内部...('一些内容')
简而言之 - 我不想要标签,属性等 - 只有那些元素的内容..
var Crawler = require("js-crawler");
var download = require("url-download");
var sanitizeHtml = require('sanitize-html');
var util = require('util');
var fs = require('fs');
new Crawler().configure({depth: 1})
.crawl("http://www.cnn.com", function onSuccess(page) {
var clean = sanitizeHtml(page.body,{
allowedTags: [ 'p', 'em', 'strong','div' ],
});
console.log(clean);
fs.writeFile('sanitized.txt', clean, function (err) {
if (err) throw err;
console.log('It\'s saved! in same location.');
});
console.log(util.inspect(clean, {showHidden: false, depth: null}));
var str = JSON.stringify(clean.toString());
console.log(str);
/*download(page.url, './download')
.on('close', function …Run Code Online (Sandbox Code Playgroud) 我正在尝试清理 MarkupString 的内容。实际上我创建了这个(基于https://github.com/dotnet/aspnetcore/blob/574be0d22c1678ed5f6db990aec78b4db587b267/src/Components/Components/src/MarkupString.cs)
public struct MarkupStringSanitized
{
public MarkupStringSanitized(string value)
{
Value = value.Sanitize();
}
public string Value { get; }
public static explicit operator MarkupStringSanitized(string value) => new MarkupStringSanitized(value);
public override string ToString() => Value ?? string.Empty;
}
Run Code Online (Sandbox Code Playgroud)
但是渲染输出不是原始 html。我应该如何实现 MarkupStringSanitized 来使用
@((MarkupStringSanitized)"Sanitize this content")
Run Code Online (Sandbox Code Playgroud) 是否有任何JSF实用工具包或PrimeFaces/OmniFaces等库中可用的HTML清理程序或清理方法?
我需要通过p:编辑器清理用户的HTML输入,并使用escape="true"stackexchange样式显示安全的HTML输出.在显示HTML之前,我正在考虑将已清理的输入数据存储到数据库中,以便它可以安全使用,escape="true"并且XSS不是危险的.
我正在调查XSS我的应用程序可能的攻击向量.
是)我有的:
textarea字段.通常,此字段可以包含html标记.Twig 呈现数据的模板.我使用该表单插入以下内容:
<b>Some valid HTML text</b>
<script type="text/javascript">alert("XSS")</script>
Run Code Online (Sandbox Code Playgroud)
查看该数据将需要转义.在转义数据时,我很熟悉一些策略.
1)raw过滤器:完全禁用转义 - >引入可能的XSS
2)e过滤器:
html 味道输出: <b>Some valid HTML text</b> <script type="text/javascript">alert("XSS")</script>js 味道输出: \x3Cb\x3ESome\x20valid\x20HTML\x20text\x3C\x2Fb\x3E\x0D\x0A\x3Cscript\x20type\x3D\x22text\x2Fjavascript\x22\x3Ealert\x28\x22XSS\x22\x29\x3C\x2Fscript\x3E3){{ var|striptags('<br>')|raw }},输出:一些有效的HTML文本警报("XSS")
这个有用,但我不喜欢它.我宁愿寻找黑名单解决方案,而不是白名单.
现在的问题是:
有没有任何其他转义策略允许html标签,但<script>像e("js")过滤器一样转义标签?
我应该在表单提交期间还是在Twig呈现期间"杀死"脚本?
我正在生成html,并使用将其插入到我的网页中
let data = '<font color=blue>hello world</font>';
this.safevalue = this.domSanitizer.bypassSecurityTrustHtml(data);
Run Code Online (Sandbox Code Playgroud)
在我的代码的其他地方,我想将安全值转换回字符串,所以我尝试了这个...
data = this.safevalue.toString();
Run Code Online (Sandbox Code Playgroud)
但这会将数据设置为这样的字符串...
'SafeValue must use [property]=binding: (see http://g.co/ng/security#xss)'
Run Code Online (Sandbox Code Playgroud)
这没有帮助
html-sanitizing ×10
asp.net-core ×2
html ×2
angular ×1
blazor ×1
c# ×1
django ×1
font-awesome ×1
getimagesize ×1
html-safe ×1
javascript ×1
jsf ×1
node.js ×1
omnifaces ×1
php ×1
primefaces ×1
python ×1
struct ×1
symfony ×1
templates ×1
twig ×1
xss ×1