据我了解,生成盐的最佳做法是使用源代码中存储的一些神秘公式(甚至魔术常量).
我正在研究一个我们打算作为开源发布的项目,但问题是源代码是生成盐的秘密公式,因此能够在我们的网站上运行彩虹表攻击.
我认为很多人在我面前都考虑过这个问题,我想知道最佳做法是什么.在我看来,如果代码是开源的话,根本就没有盐,因为盐可以很容易地进行逆向工程.
思考?
我有一个可重复使用的开箱即用的sharepoint批准工作流程2010,我使用infopath formcode(2010)中的以下代码片段以编程方式批准/拒绝工作流程.
Hashtable ht = new Hashtable();
ht[SPBuiltInFieldId.Completed] = "TRUE";
ht["Completed"] = "TRUE";
ht[SPBuiltInFieldId.PercentComplete] = 1.0f;
ht["PercentComplete"] = 1.0f;
ht["Status"] = "Completed";
ht[SPBuiltInFieldId.TaskStatus] = SPResource.GetString
(new CultureInfo((int)task.Web.Language, false),
Strings.WorkflowStatusCompleted, new object[0]);
if (isApprove)
{
ht[SPBuiltInFieldId.WorkflowOutcome] = "Approved";
ht["TaskStatus"] = "Approved";
ht[SPBuiltInFieldId.Comments] = "Approved by Manager";
ht["Comments"] = "Approved by Manager";
}
else
{
XPathNavigator navigatorRejectComments
= this.MainDataSource.CreateNavigator().SelectSingleNode
(XPATH_REJECT_COMMENTS, this.NamespaceManager);
ht[SPBuiltInFieldId.WorkflowOutcome] = "Rejected";
ht["TaskStatus"] = "Rejected";
ht[SPBuiltInFieldId.Comments] = navigatorRejectComments.Value.Trim();
ht["Comments"] = navigatorRejectComments.Value.Trim();
}
ht["FormData"] = SPWorkflowStatus.Completed;
web.AllowUnsafeUpdates = true;
isApproveReject = …Run Code Online (Sandbox Code Playgroud) 在C#中,实际上,我没有发现以下内容之间存在任何差异:
new Thread(SomeMethod).Start();
Run Code Online (Sandbox Code Playgroud)
,
new Thread(new ParameterizedThreadStart(SomeMethod));
Run Code Online (Sandbox Code Playgroud)
和
new Thread(new ThreadStart(SomeMethod));
Run Code Online (Sandbox Code Playgroud)
有什么区别,如果有的话?
首先:我知道如何解决这个问题.我不是在寻找解决方案.我对设计选择背后的原因感兴趣,导致一些隐含的转换并且没有导致其他转换.
今天我在代码库中遇到了一个小但有影响的错误,其中一个int常量用char相同数字的表示初始化.这导致ASCII转换char为a int.像这样的东西:
char a = 'a';
int z = a;
Console.WriteLine(z);
// Result: 97
Run Code Online (Sandbox Code Playgroud)
我很困惑为什么C#会允许这样的东西.搜索后我发现以下SO问题,Eric Lippert自己给出了答案:C#中的隐式类型转换
摘录:
但是,我们可以做出有根据的猜测,为什么隐含的char-to-ushort被认为是个好主意.这里的关键思想是从数字到字符的转换是"可能是狡猾的"转换.它正在采取你不知道的东西是一个角色,并选择将其视为一个角色.这似乎是你想要明确表达的事情,而不是意外地允许它.但反之则不那么狡猾.C编程中有一个悠久的传统,即将字符视为整数 - 获取它们的基础值,或者对它们进行数学处理.
我同意它背后的推理,虽然IDE提示会很棒.但是,我有另一种情况,隐式转换突然不合法:
char a = 'a';
string z = a; // CS0029 Cannot implicitly convert type 'char' to 'string'
Run Code Online (Sandbox Code Playgroud)
这种转换是我的拙见,非常符合逻辑.它不会导致数据丢失,作者的意图也很清楚.还后,我读了答案的其余部分char,以int隐式转换,我还没有看到任何理由,这不应该是合法的.
这就引出了我的实际问题:
C#设计团队有什么理由可以实现隐式转换char为a string,而它看起来很明显(特别是在将它char与int转换进行比较时).
我正在制作一个软件,只需要允许人们使用OpenFileDialog选择文件和文件夹,这些文件和文件夹与程序位于同一目录中并且位于更深的文件夹中.我不希望OpenFileDialog能够选择程序当前目录之外的东西.使用OpenFileDialog可以在C#中做到这一点吗?
请告诉我
谢谢
我确信这个问题有一个简单的解决方案,但我似乎无法做到正确:
我只想在整行与正则表达式匹配时替换一行中的特定模式.
所以在我的情况下|,_只有当整行是数字和管道时,三个管道才应该用下划线代替:
|||10|||-80|||-120|||400 ---> replace
|||10|||asdf|||-120|||400 ---> don't replace
|||10|||-80|||400 ---> replace
|||10|||-80|||-120|||400|||test ---> don't replace
Run Code Online (Sandbox Code Playgroud)
预期结果:
___10___-80___-120___400
|||10|||asdf|||-120|||400
___10___-80___400
|||10|||-80|||-120|||400|||test
Run Code Online (Sandbox Code Playgroud)
我的尝试:
\|\|\|(?=\-?\d+)
Run Code Online (Sandbox Code Playgroud)
如果按照预期后跟数字,则替换管道,但当然也在"无效"行中
^(\|\|\|\-?\d+){1,}$
Run Code Online (Sandbox Code Playgroud)
匹配整行,因此我不能只更换管道
我理解为什么我的模式不起作用,也许我只需要两次通过,但感觉这应该是完全可能的.
我正在读一本关于C#的书,我在命名和可选参数的章节中.我读过一个子弹,上面写着:
"如果存在多个可选参数且为1指定了值,则还必须为所有前面的可选参数提供值"
能不能给我一个例子,因为我无法从代码中重现上述陈述.
我正在使用 ajax 发送表单数据,因此要覆盖我正在使用的默认浏览器行为preventDefault(),但我希望保留浏览器功能以记住输入的数据以供将来自动完成。
是否有可能做到这一点?
HTML
<form id="form-login" action="/padrao/Login/executaLoginAjax" method="post">
<input type="text" id="usuario" name="usuario[email]" class="entradas" placeholder="Usuário" maxlength="80" required />
<input type="password" id="senha" name="usuario[senha]" class="entradas" placeholder="Senha" maxlength="12" required />
<input type="submit" id="btn-logar" value="Acessar o sistema" />
</form>
Run Code Online (Sandbox Code Playgroud)
Javascript
$('#form-login').submit(function(event){
event.preventDefault();
var action = $(this).attr('action');
var dados = $(this).serialize();
$.ajax({
type: "POST",
url: action,
data: dados,
dataType: "json",
success: function(json){
if(json.sucesso){
window.location.href = 'http://' + location.host + '/home';
}else{
alert('fail');
}
}
});
});
Run Code Online (Sandbox Code Playgroud) 如果我有一个字符串,如:
["aaaaa","bbbbb","ccccc","ddddd","eeeee"]
Run Code Online (Sandbox Code Playgroud)
我如何将其转换为列表或数组?
我是c#编程的新手,这个看似简单的问题让我感到难过.谢谢!
我正在尝试执行使用两个嵌套循环的Python脚本。
第一个是for和第二个(嵌套的是while)。
这是我的代码:
for currentData in data:
currentState = ''
count = 0
while currentState == '':
currentState = someMetdhodExecution() ...
count++
Run Code Online (Sandbox Code Playgroud)
当我把while里面for的脚本崩溃。
能否请你帮我解决这个问题。
先感谢您!
c# ×7
.net ×5
ajax ×1
asp.net ×1
encryption ×1
for-loop ×1
html ×1
javascript ×1
jquery ×1
loops ×1
open-source ×1
python ×1
rainbowtable ×1
regex ×1
salt ×1
security ×1
tinymce ×1
while-loop ×1