问题标签 [secure-coding]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java 控制台输入验证以防止 DOS 攻击
全部,
我编写了一个 java 代码,需要检查用户使用控制台输入的文本,我希望代码测试输入的行不超过例如 20 个字母,我写如下:
不确定我是否真的需要检查以防止 DOS 攻击,或者 Java 通常会处理这个问题?
谢谢,
security - 阻止查看主干 Js 应用代码
我可以阻止查看 Inspect element -> sources 中的主干.js 应用程序代码查看吗?
我不是在讨论视图 Html 和 css,而是在讨论保存模型数据的 Backbone 视图文件。代码部署在heroku中,是否有任何插件可以阻止在heroku中查看代码?
或任何额外的安全js,我需要包括来阻止它?
谢谢,维吉
c++ - 运行时错误除以 -1
我不怀疑需要检查除以零。我从来没有听说过用负数来检查除法!
x, y
是指向的指针int32_t
,我在相关的情况下包括了这个细节。
在运行时,如果*x==0x80000000, *y==0xffffffff
,我得到错误(在 Xcode 中):
EXC_ARITHMETIC(代码=EXC_I386_DIV,子代码=0x0)
我在网上只能找到除以零的建议,但正如您从上面的检查中看到的那样,我可以从调试窗口中看到,这里不是这种情况。
错误是什么意思,我该如何解决?
c - 使用 getchar() 和空白填充进行安全编码
这段代码是一个更大项目的一部分。我告诉你这是因为它是相关的。我正在开发一个小型(codewise)数据库来跟踪我所有的照片。我正在设计它,以便以后可以扩展程序以存储我所有论文中的引文。
无论好坏,我都选择了一个具有固定宽度字段的简单平面文件系统。这可能不是对内存的最有效使用,并且文件大小会变得混乱,但它具有一些超级优势:没有分隔符,因此文件可以通过良好的格式轻松保持人类可读,以及使用简单的数组索引轻松访问数组。
我特别喜欢最后一部分,因为它在我的技能范围内。关于这个数据库的一件事是我需要能够输入很多条目 FAAAA...ST!瓶颈出现在用户输入部分,而不是内存,也不是磁盘空间,所以我专注于让输入变得快速和简单。
我了解到在 C 中获取用户输入可能是一件棘手的事情。C 的字符串处理库有很多可以用来产生缓冲区溢出的函数。所以……对于这段代码,我实施了 Robert C. Seacord在 C 和 C++ 中的安全编码中的一些建议,特别是“字符串和缓冲区溢出”一章。
这是一个链接:http ://www.informit.com/articles/article.aspx?p=2036582&seqNum=5
Seacord 建议使用 fgets() 处理输入行,虽然可以安全地执行,但具有性能限制。(我喜欢快。不是吗?)他进一步建议使用 getchar() 代替。这就是我所做的。
这是他对使用 while 循环安全地使用 getchar() 的建议:
在下面的代码中,我稍微调整了一下。
我需要 I/O 做几件事。首先,如果输入的输入太长,我希望它被截断。即使我可能是唯一的用户,我也可能会犯错误。其次,如果输入比字段宽度短(主要是这种情况),我想在该字段右侧填充空格。
这就是我遇到的问题。稍后再谈。
这个空白使平面文件看起来干净,并且再次使索引变得非常容易。我只需要按“Enter”键并按顺序进入下一个条目,因为我知道计算机已经按照我想要的方式格式化了数据。
(这实际上是一个粗略的实现 EF Codd 的原则,即数据必须被屏蔽以防止直接访问。在进入存储之前,必须对所有内容进行检查、抛光、解析等。这样可以防止数据损坏。)
在这段代码中,我已经删除了最后的所有内容,因为它只是噪音,而且我非常讨厌尝试阅读其他人的代码,他们将整个该死的程序与各种无关的东西而不是给他们带来麻烦的部分一起发布. 同时,我喜欢发布一个可以选择、复制、粘贴、保存和编译的完整程序。所以我在这里做了。我已经在评论和我的小检查中留下了我将取消评论以确保一切正常,然后再次注释掉,所以这不是最简单的代码,但是爱因斯坦那句著名的关于太简单的名言是什么?
无论如何,我知道这有点长,但我想勾勒出我正在使用的设计原则。你可能有一个有用的批评。我肯定会采取愚蠢的做法。
我遇到的确切问题是如何用正确数量的空白填充这些字段。
我确实想出了一个解决方案。有点。
但这对我来说似乎是一个黑客行为。
我只是怀疑有一种更有效、更快或更优雅的方式来完成我想要做的事情。“hack”部分是调用第二个打印函数并使用字符数和 maxlength 常量之间的差异在数据后添加空格。见第 27-39 行。它有效……但是?
我不应该直接填充数组吗?
想不通!
这是代码:
顺便说一句,我在发布之前真的搜索过这个问题的答案。随意打倒我,但似乎每个人都试图解决一个略有不同的问题,尤其是对数据保护和缓冲区溢出的漠不关心。所以我不认为这是一个重复的问题。
[编辑] 这是修改后的代码。它结合了 Joachim 的解决方案和 if-else 循环来隔离截断的字符串。它仍然不是最好的,但...
c++ - 多字节到宽字符转换后内存中存在临时副本
我正在尝试将安全的 char 字符串转换为 unicode 字符串。由于我需要处理安全数据,我确保在使用后清除内存。我尝试按照 API 进行 unicode 转换。
MultiByteToWideChar()
A2W()
mbstowcs_s()
转换为 Unicode 字符串成功地与上述所有 API 一起工作。在上述操作之后,我已经清除了所有安全数据存储器,包括 o/p unicode 值。但是在此之后转储内存时,unicode 字符串的副本仍保留在内存中。我已确保清除所有处理安全数据的变量(通过使用SecureZeroMemory
() API)。我怀疑它是上述 API 使用的临时副本。我需要 unicode 值并且需要保护我的数据。我怎样才能做到这一点?
代码片段在下面共享。
php - PHP 中的安全会话
可以创建一个盐(随机字符串),将其附加到用户 id 字符串,然后是 md5(或其他加密),将相同的结果保存为 cookie,并作为会话变量,然后在安全页面上包含一个 php 脚本来制作确定 cookie 和会话变量都匹配吗?
这会安全吗?
c# - Windows Phone 和 Azure 之间的安全连接
我提出了一个社会观念。例如 whatsapp、instagram 或类似的移动应用程序。决定在 Windows Phone 上发布第一个版本。当然,最好的云选择将是 Azure。我信任微软及其产品。
所以,问题是“我怎样才能保证我的移动应用程序安全(安全代码建议、反反编译器?加密源代码、类和文件?)并获得应用程序的安全 Azure 连接?”
Microsoft 或 Azure 为我们提供了什么?隐私和安全是我目前的首要目标。
android - Android 安全,用什么代替字符串
我是 Android 新手,我正在制作一个应用程序,我想专注于应用程序的安全性,我找到了这个链接,上面写着“通过将敏感信息设置为 null利用。” 后来它说“避免使用Java的String类来保存敏感信息。而是使用char数组或字节数组。这样做的原因是因为字符串是不可变的”
在我的应用程序中,我有一个与此类似的代码(此代码仅检查用户输入的 PIN 并将其与内部存储中的另一个 PIN 进行比较):
对于我在预览链接中读到的内容,我没有使用 String,而是使用 StringBuilder,因为 StringBuilder 是可变的,在我使用它之后,将值更改为“stringBuilder = new StringBuilder("");”,我没有使用 char [] 因为我不知道如何将 editText 保存到 char[] 变量或如何将文件中保存的 PIN 保存在 char[] 变量中,而且我没有找到有关如何使用 char[] 的示例那些案例。
我的问题是:这种情况对于 android 应用程序是安全的,还是更改为 char[] 变量更好?, StringBuffer 类对于 Android 是否不安全?如何将 editText 值保存在 char[] 中?如何将文件保存在 char[] 变量中?
php - 如果用户不是 id 的所有者,如何保护 id 个人资料页面并且不显示数据
我正在开发一个网站。我有一个登录、注册和个人资料页面。当用户登录时,他被重定向到页面profile.php?id=1
。假设另一个id=2
登录的用户将 2 替换为 1。如何保护页面不显示与使用 php 的用户 1 对应的数据。
php - The Defined function "mysql_entities_fix_string" in PHP isn't getting called
I'm trying to test a simple PHP page. I'm filtering out malicious input using a function "mysql_entities_fix_string" but the program isn't able to call it. Thus no value is getting fetched in $usernameP or in $passwordP. Can anyone suggest something ?