我们目前正在构建一个执行许多外部工具的应用程序.我们经常要将用户输入我们系统的信息传递给这些工具.
显然,这是一场等待发生的大安全噩梦.
遗憾的是,我们还没有在.NET Framework中找到执行命令行程序的任何类,同时提供与IDbCommand对象为数据库执行的注入攻击相同的防范.
现在,我们正在使用一个非常原始的字符串替换,我怀疑它是不够的:
Run Code Online (Sandbox Code Playgroud)protected virtual string Escape(string value) { return value .Replace(@"\", @"\\") .Replace(@"$", @"\$") .Replace(@"""", @"\""") .Replace("`", "'") ; }
你们做了什么来防止命令行注入攻击?我们计划实现一个非常严格的正则表达式,只允许一小部分字符通过,但我想知道是否有更好的方法.
一些澄清:
我与之交谈过的每个人都知道(知道)有关它的声称,这是自切片面包以来最伟大的事情.为什么会失败?或者,如果它没有失败,谁现在正在使用它?
我越来越多地使用Python,并且我一直__all__在不同的__init__.py文件中看到变量集.有人可以解释这是做什么的吗?
我正在使用ant生成javadocs,但一遍又一遍地得到这个例外 - 为什么?
我正在使用JDK版本1.6.0_06.
[javadoc] java.lang.ClassCastException: com.sun.tools.javadoc.ClassDocImpl cannot be cast to com.sun.javadoc.AnnotationTypeDoc
[javadoc] at com.sun.tools.javadoc.AnnotationDescImpl.annotationType(AnnotationDescImpl.java:46)
[javadoc] at com.sun.tools.doclets.formats.html.HtmlDocletWriter.getAnnotations(HtmlDocletWriter.java:1739)
[javadoc] at com.sun.tools.doclets.formats.html.HtmlDocletWriter.writeAnnotationInfo(HtmlDocletWriter.java:1713)
[javadoc] at com.sun.tools.doclets.formats.html.HtmlDocletWriter.writeAnnotationInfo(HtmlDocletWriter.java:1702)
[javadoc] at com.sun.tools.doclets.formats.html.HtmlDocletWriter.writeAnnotationInfo(HtmlDocletWriter.java:1681)
[javadoc] at com.sun.tools.doclets.formats.html.FieldWriterImpl.writeSignature(FieldWriterImpl.java:130)
[javadoc] at com.sun.tools.doclets.internal.toolkit.builders.FieldBuilder.buildSignature(FieldBuilder.java:184)
[javadoc] at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source)
[javadoc] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[javadoc] at java.lang.reflect.Method.invoke(Method.java:597)
[javadoc] at com.sun.tools.doclets.internal.toolkit.builders.FieldBuilder.invokeMethod(FieldBuilder.java:114)
[javadoc] at com.sun.tools.doclets.internal.toolkit.builders.AbstractBuilder.build(AbstractBuilder.java:90)
[javadoc] at com.sun.tools.doclets.internal.toolkit.builders.AbstractMemberBuilder.build(AbstractMemberBuilder.java:56)
[javadoc] at com.sun.tools.doclets.internal.toolkit.builders.FieldBuilder.buildFieldDoc(FieldBuilder.java:158)
[javadoc] at sun.reflect.GeneratedMethodAccessor51.invoke(Unknown Source)
[javadoc] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[javadoc] at java.lang.reflect.Method.invoke(Method.java:597)
[javadoc] at com.sun.tools.doclets.internal.toolkit.builders.FieldBuilder.invokeMethod(FieldBuilder.java:114)
[javadoc] at com.sun.tools.doclets.internal.toolkit.builders.AbstractBuilder.build(AbstractBuilder.java:90)
[javadoc] at com.sun.tools.doclets.internal.toolkit.builders.AbstractMemberBuilder.build(AbstractMemberBuilder.java:56)
[javadoc] at com.sun.tools.doclets.internal.toolkit.builders.ClassBuilder.buildFieldDetails(ClassBuilder.java:301)
[javadoc] …Run Code Online (Sandbox Code Playgroud) 我有多个选择:
<select id="one">
<option value="1">one</option>
<option value="2">two</option>
<option value="3">three</option>
</select>
<select id="two">
<option value="1">one</option>
<option value="2">two</option>
<option value="3">three</option>
</select>
Run Code Online (Sandbox Code Playgroud)
我想要的是从第一个选择中选择"一个",然后从第二个选项中删除该选项.然后,如果你从第二个中选择"两个",我希望从第一个中删除一个.
这是我目前的JS:
$(function () {
var $one = $("#one");
var $two = $("#two");
var selectOptions = [];
$("select").each(function (index) {
selectOptions[index] = [];
for (var i = 0; i < this.options.length; i++) {
selectOptions[index][i] = this.options[i];
}
});
$one.change(function () {
var selectedValue = $("option:selected", this).val();
for (var i = 0; i < selectOptions[1].length; i++) {
var exists = false;
for …Run Code Online (Sandbox Code Playgroud) 在编写switch语句时,在case语句中可以打开的内容似乎存在两个限制.
例如(是的,我知道,如果你正在做这种事情,这可能意味着你的面向对象(OO)架构是不确定的 - 这只是一个人为的例子!),
Type t = typeof(int);
switch (t) {
case typeof(int):
Console.WriteLine("int!");
break;
case typeof(string):
Console.WriteLine("string!");
break;
default:
Console.WriteLine("unknown!");
break;
}
Run Code Online (Sandbox Code Playgroud)
这里switch()语句失败,带有'一个预期的整数类型的值',case语句失败并带有'a expected value is expected'.
为什么会有这些限制,以及基本理由是什么?我看不出有任何理由switch语句具有只能屈从于静态分析,为什么在接通的值必须是完整的(即原语).理由是什么?
在软件开发生命周期中,您会生成哪些基本的设计工件?是什么让它们对你的实践至关重要?
我目前正在进行的项目已经生产了8年多.此Web应用程序在此期间得到了积极的增强和维护.虽然我们已经制定了基于CMMI的政策和流程,但我们的部分实践得到了很好的定义,但设计阶段在很大程度上被忽视了.最好的做法,有人吗?
我的应用程序表面有许多控件,并且在运行时动态添加了更多控件。
尽管我使用选项卡来限制显示的控件数量,并且也使用双缓冲,但在必须重绘(调整大小、最大化等)时它仍然闪烁和卡顿。
您有哪些提高 WinForms 应用程序性能的技巧和窍门?
在显式vs隐式内连接中是否存在效率差异?例如:
SELECT * FROM
table a INNER JOIN table b
ON a.id = b.id;
Run Code Online (Sandbox Code Playgroud)
与
SELECT a.*, b.*
FROM table a, table b
WHERE a.id = b.id;
Run Code Online (Sandbox Code Playgroud) java ×3
ant ×1
artifacts ×1
c# ×1
command-line ×1
delegates ×1
dom ×1
html-select ×1
javadoc ×1
javascript ×1
jini ×1
join ×1
jquery ×1
namespaces ×1
performance ×1
python ×1
security ×1
sql ×1
syntax ×1
winforms ×1