小编use*_*427的帖子

C#html消毒剂有一个很好的解决方案吗?

用户可以输入稍后将显示给其他用户的HTML.我正在使用的WYSIWYG插件从前端清理HTML.它删除了所有潜在的恶意标签(脚本,src,以"on"等开头的任何东西)我显然也需要在后端进行一些验证.

有谁知道C#的好解决方案?我一直看到这个http://roberto.open-lab.com/2010/03/04/a-html-sanitizer-for-c/,虽然我有点犹豫是否使用随机博客中的一些代码.有没有众所周知的插件?大多数人在这种情况下做了什么?

html c#

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

我如何防止src等属性中的XSS攻击?

因此,我一直在使用带有白名单的html敏捷性构建C#html清理程序.它工作正常,除了这样的情况:

<img src="javascript:alert('BadStuff');" />
<img src="jav&#x09;ascript:alert('BadStuff');"> 
Run Code Online (Sandbox Code Playgroud)

我想要允许src属性,显然不是其中的恶意内容.我查找过的所有内容都推荐了一个标签及其属性的白名单.你会怎么处理这样的事情呢?我知道这在任何较新的浏览器中都不起作用,但我对安全性不是很熟悉,而且我确信攻击者可以做一些其他聪明的事情.

c# security xss html-agility-pack

9
推荐指数
2
解决办法
1596
查看次数

动态SQL比硬编码等效的时间长得多

我有一个动态的SQL.运行大约需要4分钟.如果我改为使用SQL的输出并运行它,则需要大约20秒.为什么会出现差异?我知道在动态版本中构建SQL会花费一些时间,但我无法想象它的价格昂贵.

有人有主意吗?这两个查询应该是相同的,所以我怀疑它是查询计划缓存的奇怪之处,但实际上并没有多少想法.

编辑: 通过输出来澄清我的意思.

在动态SQL中,最后一行是

EXEC sp_executesql @myQuery,
    N'@var1 INT,
    @var2 INT,
    @var2 INT',
    @var1,
    @var2,
    @var3
Run Code Online (Sandbox Code Playgroud)

我获取了myQuery的值并将其放在自己的SQL文件中.那是在20秒运行,而使用执行的动态需要4分钟.

编辑2 我删除了参数.我得到了有趣的结果.动态SQL语句看到了性能提升.硬编码版本的性能受到了极大的打击.两者现在差不多了.

sql sql-server

7
推荐指数
3
解决办法
5586
查看次数

想要在Datatables中进行排序时触发自定义事件

当用户单击列标题进行排序时,我想触发自己的事件.我不想让它排序.我一直在做研究,并没有看到一个很好的方法来做到这一点.

我可以绑定sort事件来做我自己的事情,但仍然会发生这种情况.我不想要这个.如果我禁用排序,那么sort事件永远不会触发,所以这也不起作用.

我可以禁用排序,然后尝试捕获标题上的点击事件,但我希望有更好的方法来做到这一点.有人有主意吗?

javascript sorting jquery datatables

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

有没有办法防止SQL缓存的重复调用和更快?

我需要在1-2秒内运行几个查询.我一直在努力优化它们,但是第一次调用它们需要大约20秒,在所有后续调用中大约需要1秒.这使我无法判断我所做的任何更改是否会加快查询速度,因为它总是在〜1秒后运行.我对SQL并不十分熟悉,但从我能够学到的东西来看,似乎有些东西就是缓存.我正在试图弄清楚如何防止这种情况,但似乎没有任何效果.从我在Google上发现的,人们一直在暗示

DBCC FREEPROCCACHE
Run Code Online (Sandbox Code Playgroud)

要么

OPTION(recompile)
Run Code Online (Sandbox Code Playgroud)

这些似乎都不起作用.当第一次使用~20时,每个查询仍在~1秒内运行.我只想确保我所做的更改正在带来改进,而不是改进来自缓存.还有其他一些技巧吗?

sql sql-server

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

一个正则表达式可以实现吗?

我有一个字符串

{! texthere }
Run Code Online (Sandbox Code Playgroud)

我希望在{!直到结束或你到达第一个}.所以,如果我有

{!text here} {!text here again} {!more text here.好家伙!

我希望["{{text here}","{{text here again}","{!more text here.哦,boy!"]

我认为这会奏效

{!*} ??

但上面的字符串会出现[{{{text here} {!text here again} {!more text here.哦,小男孩!"]

我仍然对正则表达式缺乏经验,所以我不明白为什么这不起作用.我认为它会匹配'{!' 然后是任意数量的字符,直到你得到一个可能不存在的括号(非贪婪).

regex

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

如何在JavaScript中实际捕捉花括号之间的东西?

我需要捕捉大括号之间的所有内容.所以,如果我有字符串:

{this} {is a} blah {test}

应该返回[this,is a,test].

我的代码看起来像这样:

var myString = "{this} {is a} blah {test}";
var parts = (/{([^{}]+)}/g).exec(myString);

//   parts = [{this}, {is a}, {test}]  


var parts = (/{([^{}]+)}/g).exec(myString);
//   parts = [{this}, this]
Run Code Online (Sandbox Code Playgroud)

任何想法/帮助?

javascript regex

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

你可以初始化一个抽象类,以便以后可以将它设置为等于子类吗?

这就是我想要做的:

abstract class BaseAnimal;
class cat : BaseAnimal;
class dog : BaseAnimal;


var allAnimals = new list<BaseAnimal>();

foreach (var someVar in allVars)
{
    var myAnimal = new BaseAnimal();

    if (someVar == true)
    {
        myAnimal = new cat();
    }
    else
    {
        myAnimal = new dog();
    }


    /* do other things with myAnimal var */
    allAnimals.add(myAnimal);
}
Run Code Online (Sandbox Code Playgroud)

有没有办法做这样的事情,或者我将不得不在每个IF语句中初始化变量然后复制其他东西/把它放在一个函数中并调用它两次?

c# abstract-class

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