问题标签 [security]
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.
security - PHP 会话安全
使用 PHP 维护负责任的会话安全有哪些指导方针?网络上到处都是信息,现在是时候将它们全部放在一个地方了!
forms - 基于表单的网站身份验证权威指南
版主备注:
这个问题不适合我们的问答格式以及当前适用于 Stack Overflow的话题性规则。对于内容仍然有价值的此类问题,我们通常使用“历史锁定”。但是,此问题的答案得到积极维护,历史锁定不允许编辑答案。因此,已应用“wiki 答案”锁定以允许编辑答案。您应该假设存在通常由历史锁定处理的话题性问题(即这个问题不是 Stack Overflow 的话题性问题的一个很好的例子)。
网站基于表单的身份验证
我们认为 Stack Overflow 不应该只是针对非常具体的技术问题的资源,还应该提供有关如何解决常见问题变体的一般指南。“基于表单的网站身份验证”应该是此类实验的一个很好的主题。
它应包括以下主题:
- 如何登录
- 如何退出
- 如何保持登录状态
- 管理 cookie(包括推荐设置)
- SSL/HTTPS 加密
- 如何存储密码
- 使用秘密问题
- 忘记用户名/密码功能
- 使用nonce防止跨站点请求伪造 (CSRF)
- 开放ID
- “记住我”复选框
- 浏览器自动完成用户名和密码
- 秘密 URL(受摘要保护的公共URL )
- 检查密码强度
- 电子邮件验证
- 以及更多关于 基于表单的身份验证...
它不应包括以下内容:
- 角色和授权
- HTTP 基本认证
请通过以下方式帮助我们:
- 建议子主题
- 提交关于这个主题的好文章
- 编辑官方答案
security - 是否有在敏捷开发商店中测试安全性的最佳实践?
关于敏捷开发,测试每个版本的安全性的最佳实践是什么?
如果是每月发布,是否有商店每个月都进行渗透测试?
.net - .NET 混淆工具/策略
我的产品有几个组件:ASP.NET、Windows Forms App 和 Windows Service。95% 左右的代码是用 VB.NET 编写的。
出于知识产权的原因,我需要对代码进行模糊处理,直到现在我一直在使用一个 dotfuscator 版本,它现在已经超过 5 年了。我认为是时候转向新一代工具了。我正在寻找的是在搜索新的混淆器时应该考虑的要求列表。
到目前为止,我知道我应该寻找什么:
- 序列化/反序列化。在我当前的解决方案中,我只是告诉该工具不要混淆任何类数据成员,因为无法加载之前序列化的数据的痛苦太大了。
- 与构建过程集成
- 使用 ASP.NET。过去,由于更改 .dll 名称(通常每页有一个),我发现这个问题 - 并非所有工具都能很好地处理。
mysql - 发送查询时我需要逃避什么?
当您执行 SQL 查询时,您必须清理您的字符串,否则用户可能会在您的网站上执行恶意 SQL。
我通常只有一个函数 escape_string(blah),它:
\
用双转义符( ) 替换转义符 (\\
)。'
用转义的单引号 ( )替换单引号 (\'
)。
这足够吗?我的代码有漏洞吗?有没有一个图书馆可以为我快速可靠地做到这一点?
我希望看到 Perl、Java 和 PHP 中的优雅解决方案。
security - 我的网站被黑了。我该怎么办?
我爸爸今天打电话给我,说访问他的网站的人正在尝试将 168 种病毒下载到他们的计算机上。他根本不是技术人员,而是用所见即所得的编辑器构建了整个东西。
我打开了他的网站并查看了源代码,在源代码底部的结束 HTML 标记之前有一行 Javascript 包含。他们包括这个文件(以及许多其他文件):http ://www.98hs.ru/js.js <--在你去那个 URL 之前关闭 JAVASCRIPT。
所以我暂时把它注释掉了。事实证明,他的 FTP 密码是一个普通的字典单词,长度为六个字母,所以我们认为这就是它被黑客入侵的原因。我们已将他的密码更改为一个 8 位以上的非单词字符串(他不会输入密码,因为他是个打猎打字员)。
我在 98hs.ru 上做了一个 whois,发现它是由智利的服务器托管的。实际上也有一个与之相关的电子邮件地址,但我严重怀疑这个人是罪魁祸首。可能只是其他一些被黑客入侵的网站......
我现在不知道该怎么做,因为我以前从未处理过这种事情。有人有什么建议吗?
他通过 webhost4life.com 使用普通的 jane 不安全 ftp。我什至看不到在他们的网站上进行sftp 的方法。我在想他的用户名和密码被截获了?
因此,为了使这与社区更相关,您应该采取哪些步骤/应该遵循哪些最佳实践来保护您的网站免受黑客攻击?
为了记录,这是“神奇地”添加到他的文件中的代码行(并且不在他计算机上的文件中——我将其注释掉只是为了绝对确保它不会做任何事情在这个页面上,虽然我确信杰夫会提防这一点):
security - Web 表单是否有不显眼的验证码?
什么是 Web 表单最好的不显眼的 CAPTCHA?一个不涉及 UI,而是非 UI 图灵测试。我见过一个简单的非 UI 验证码示例,例如 Microsoft 的Nobot 控件。我正在寻找一种不会以任何形式向用户询问任何问题的验证码。没有谜语,没有这个图像中的内容。
security - 使用 HTTP_REFERER 阻止用户访问站点内部
我可以控制 HttpServer,但不能控制 ApplicationServer 或坐在那里的 Java 应用程序,但我需要阻止直接访问这些应用程序上的某些页面。准确地说,我不希望用户自动访问向适当的 servlet 发出直接 GET/POST HTTP 请求的表单。
所以,我决定根据HTTP_REFERER
. 毕竟,如果用户在网站内部导航,它会有一个合适的HTTP_REFERER
. 嗯,我就是这么想的。
我在 .htaccess 文件中实现了一个重写规则,上面写着:
我希望禁止访问未浏览站点但使用查询字符串向“servlet1”或“servlet2”servlet 发出直接 GET 请求的用户。但是我的期望突然结束了,因为正则表达式(servlet1|servlet2)/.+\?.+
根本不起作用。
当我将该表达式更改为时,我真的很失望,(servlet1|servlet2)/.+
而且效果如此之好,以至于我的用户无论是否浏览该网站都会被屏蔽。
所以,我的问题是:如果我没有访问/特权/时间来修改应用程序,我如何才能完成不允许“机器人”直接访问某些页面的事情?
linux - 保护 linux 网络服务器以供公众访问
我想设置一个便宜的 Linux 机器作为 Web 服务器来托管各种 Web 技术(想到 PHP 和 Java EE,但我也想在未来尝试使用 Ruby 或 Python)。
我相当精通将 Tomcat 设置为在 Linux 上运行以提供 Java EE 应用程序,但我希望能够打开这个服务器,即使我可以创建一些我在工作时可以使用的工具办公室。我在配置 Java EE 站点方面的所有经验都是针对 Intranet 应用程序的,在这些应用程序中,我们被告知不要专注于保护外部用户的页面。
您对以足够安全的方式设置个人 Linux Web 服务器以开放外部流量有什么建议?
php - 更好的随机生成 PHP
我知道rand()
,如果您知道自己在做什么,并且可以访问服务器,那么使用是可以预测的。
我有一个项目高度依赖于选择一个尽可能不可预测的随机数。所以我正在寻找可以生成更好随机数的建议,无论是其他内置函数还是用户函数。
我用它做了一个小测试:
我发现结果是均匀分布的,每个数字的生成次数有一个奇怪的模式。