因此,因为字符串是不可变的,我们使用char []而不是String来存储密码,这样我们就可以在完成它时删除字符.在这种情况下,StringBuilder(或StringBuffer)是否像char []一样安全,因为可以将密码的值更改为""?
Apple的安全编码指南文档提供以下指导:
不清楚(对我来说,无论如何)是如何在使用NSString时防止格式字符串攻击和缓冲区溢出.
我如何防范此类攻击?我可以申请哪些类别来防范这种情况吗?我可以使用"安全"的NSString等效物吗?
以下代码应该容易受到TOCTOU攻击:
public Period(final Date start, final Date end) {
if (start.compare(end) > 0) {
throw new IllegalArgumentException("");
}
this.start = start;
this.end = end; // Class period has 2 private final member
// variables Date start & end.
}
Run Code Online (Sandbox Code Playgroud)
我不明白的是,这种竞争条件将如何运作?假设有2个线程T1和T2,其中T1有一组有效的参数,应该通过检查,T2是一个想要在类中设置无效值的黑客.
如果2个线程正在竞争并且这段代码是我们的关键部分,则说T1运行通过检查并休眠.现在,当T2开始运行时,它是否会再次通过检查(并且失败)?
我不怀疑是否需要检查除零.我从来没有听说过负面检查分区!
if( *y == 0 )
return 0; //undefined
else
return *x / *y;
Run Code Online (Sandbox Code Playgroud)
x, y指向int32_t,我在相关的情况下包括这个细节.
在运行时,如果*x==0x80000000, *y==0xffffffff,我得到错误(在Xcode中):
EXC_ARITHMETIC(代码= EXC_I386_DIV,子代码= 0x0)
我在网上找到的所有建议都是除零,但正如你从上面的检查中看到的,我可以从调试窗口看到,这不是这里的情况.
错误意味着什么,我该如何解决?
我正在实现一个安全系统(使用.Net Core 2.0),其中需要密钥对(公共和私有)生成并将公钥传输给收件人.目前我生成密钥对(使用.Net Core Crypto库)并将私钥保留在DB中.我需要在AWS EC2实例中托管它.
我知道这是一种不好的做法(在数据库中存储私钥),我需要在安全保险库(AWS?)中生成这些密钥,并将私钥保存在保险库本身中.当需要解密时,应用程序需要检索相应的私钥.
我浏览了许多AWS文档,但找不到符合我要求的明确答案.如果有人能够就如何实现这一点向我提供一些明确的指示,那就太好了.
我正在努力消除SECURITY CODING产品中的违规行为.我的代码有很多sprintf,覆盖率工具建议我使用snprintf,但C++也有std::stringstream.用它std::stringstream代替是一个好主意snprintf
所以我有这段代码:
String username = props.getProperty("jdbc.username");
try {
String username = parts[1];
// Check procedure
System.out.println("Checking user");
// Check database user table for username
conn = getSQLConnection();
Statement stat = conn.createStatement();
ResultSet user = stat.executeQuery( "SELECT * FROM USER WHERE log_id='" + username + "';" );
// Check given password against user entry
if(user.next()){
System.out.println("User Exists: " + username);
sendMessage("true");
return;
}
else{
System.out.println("User Does Not Exist: " + username);
sendMessage("false user");
return;
}
Run Code Online (Sandbox Code Playgroud)
出于教育目的,即使我知道输入来自哪里,SQL语句是否受SQL注入保护?
int secret_foo(void)
{
int key = get_secret();
/* use the key to do highly privileged stuff */
....
/* Need to clear the value of key on the stack before exit */
key = 0;
/* Any half decent compiler would probably optimize out the statement above */
/* How can I convince it not to do that? */
return result;
}
Run Code Online (Sandbox Code Playgroud)
我需要在执行key之前从堆栈中清除变量的值return(如代码所示).
如果您感到好奇,这是一个实际的客户需求(嵌入式域).
在 Java 中,在下面的行中:
TypedQuery<T> query=entityManger.createQuery(queryString, clazz);
List<T> result =query.getResultList();
Run Code Online (Sandbox Code Playgroud)
也就是说,变量结果需要正确过滤或编码,否则可能会引发跨站脚本攻击。
我已经使用了HtmlUtils.htmlEscape(queryString)String 对象。
任何帮助和建议将不胜感激。谢谢
我一直在 python 中尝试 RSA 加密(cryptography.hazmat.primitives.ametry)。我有以下设置:一端是具有公钥的客户端,将加密数据发送回保存私钥的服务器。现在我已经可以进行单向加密,但我想知道您将如何(或者是否应该)安全地解密消息客户端。我想过只加密私钥并存储它,但密码会出现在代码中并使密钥暴露。有没有办法通过密钥交换安全地实现这一点?或者——最可能的选择——这是对协议的滥用吗?
编辑:想要澄清的是,这里可能的问题是,以这种方式使用 RSA 可能会暴露文件系统上或服务器和客户端之间的私钥。
下面是我截断表记录的代码行。表值来自前端。在我的 Veracode 扫描中,它显示了 SQL 注入。我怎样才能避免这种情况?我无法创建存储过程,因为连接字符串是动态的,我需要截断此表。还有另一种方法吗?
SqlCommand cmd = connection.CreateCommand();
cmd.Transaction = transaction;
cmd.CommandText = "TRUNCATE TABLE " + tablename;
cmd.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud) 你好!我只是想知道我刚刚创建的这个contactform脚本有多安全?很久以前,当我制作我的联系表时,我的老师正在唠叨我.
if($_SERVER['REQUEST_METHOD'] === 'POST'){
$myemail = "email@adress.com";
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$subject = $_POST['subject'];
$comments = $_POST['comments'];
if($name == 0 || !preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email) || !preg_match("/^\d{2}(-\d{3}){2}(\d{2})?$/", $phone) || $subject == 0 || $comments == 0){
$error_message = 'Something was written wrong..';
} else {
$message = "Hello!
Your contact form has been submitted by:
Name: $name
E-mail: $email
Phone: $phone
Comments: $comments
End of message";
mail($myemail, $subject, $message);
$error_message = 'Your message was sent!';
} …Run Code Online (Sandbox Code Playgroud) 我正在用C编写一些程序(很少用C++).通常它们很简单,但通常它们可以变大.
我希望了解有关使用安全版本功能的更多信息,例如strcpy()不安全,并且strcpy_s()是微软新功能的安全版本.
我通常在编写Windows *时使用Visual Studio 2010 我删除了关于Linux的部分 - 仅关注Windows*
我的问题是,如果我使用较新的安全版本,我仍然可以在旧版本的Windows上执行我的程序,例如Windows 95吗?由于要求,我们只能有一个可执行文件.
谢谢.
编辑: 对不起,这只是出现在我脑海中 - 忽略上面的Linux部分.如果我们为Windows编写代码,我不介意它是否不能移植到Linux,我只关心它是否仍适用于旧版本的Windows.
secure-coding ×13
java ×4
c++ ×3
security ×3
c ×2
sql ×2
.net-core ×1
aws-sdk ×1
c# ×1
checkmarx ×1
contact-form ×1
cryptography ×1
email ×1
ios ×1
iphone ×1
jdbc ×1
objective-c ×1
php ×1
pki ×1
printf ×1
rsa ×1
stringstream ×1
xcode ×1
xss ×1