标签: owasp

什么是OWASP?

打开Web应用程序安全项目

促进安全的软件开发面向面向Web的服务的交付主要关注"后端"而不是网络设计问题一个开放的讨论论坛任何开发团队的免费资源

它是什么?操作系统或软件?

owasp

5
推荐指数
1
解决办法
3042
查看次数

在使用之前我是否需要调用MessageDigest.reset()?

问题很简单:何时应该在java类MessageDigest上调用reset()函数?

问题主要来自OWASP参考,在代码示例中,它们执行:

   MessageDigest digest = MessageDigest.getInstance("SHA-1");
   digest.reset();
   digest.update(salt);
   byte[] input = digest.digest(password.getBytes("UTF-8"));
Run Code Online (Sandbox Code Playgroud)

然后,在一个循环中,他们做:

   for (int i = 0; i < iterationNb; i++) {
       digest.reset();
       input = digest.digest(input);
   }
Run Code Online (Sandbox Code Playgroud)

现在,对我来说,只有在摘要实例已被"更新"调用"污染"后,才会看到重置.因此,第一个样本中的那个似乎没有必要.如果有必要,是否表明MessageDigest.getInstance返回的实例不是线程安全的?

java hash cryptography owasp

5
推荐指数
1
解决办法
3601
查看次数

寻找一种方法来防止在项目中使用java.sql.Statement

我们的团队希望更好地遵守OWASP指南,其中一项任务是防止SQL注入攻击.为了促进这一点,我一直在寻找一种方法来自动检查java.sql.Statement我们的代码库中的用法,因此可以标记并更改为使用PreparedStatement.

我们的构建过程基于Maven,我们还有Sonar设置来对项目进行分析.如果满足某些阈值,Sonar中已经存在一些规则使我们的构建失败,因此可以在那里实现.我已经看到我可以在哪里设置checkstyle regex规则来查找导入,但我想看看是否还有其他选项.

开发/构建路径上的任何位置都可以工作.如果intellij中有一些东西可以标记这个,maven构建过程中的某些东西,或者在Sonar中标记这个的不同方式,那么这些都可以.

谢谢!!

java owasp sonarqube

5
推荐指数
1
解决办法
979
查看次数

尝试使用OWASP ESAPI时找不到antisamy-esapi.xml

我一直在尝试评估OWASP ESAPI库,但一直有问题只是让它正确初始化.我为ESAPI.properties和validation.properties设置了一个资源文件夹,这些文件夹从类路径加载而没有问题.但是antisamy-esapi.xml文件没有从classpath加载,我发现2010年有一个提到这个的bug.我得到的错误是:

尝试通过文件I/O加载antisamy-esapi.xml作为资源文件.在'org.owasp.esapi.resources'目录中找不到或文件不可读:C:\ Users\mydir\resin-pro-4.0.27\antisamy-esapi.xml在SystemResource Directory/resourceDirectory中找不到:.esapi\antisamy -esapi.xml在'user.home'(C:\ Users\mydir)目录中找不到:C:\ Users\mydir\esapi\antisamy-esapi.xml

我正在使用这个库部署应用程序树脂.我已经尝试手动将xml文件放在上面的所有位置,唯一一个最终工作的是我的主目录,这对于生产部署来说效果不佳.

我还遵循其他地方发现的建议,即设置-Dorg.owasp.esapi.resources属性.这也没有用,但更有趣的是错误没有改变,这让我觉得设置没有因为某些原因而被选中.

有关此文件需要在我的项目中的位置的任何指针,以便在部署到容器后正确加载它?

提前致谢.

更新:

因此,通过挖掘代码,似乎存在用于加载ESAPI.properties的专用函数,这就是为什么该文件能够从部署到容器的标准资源(或任何其他src目录)目录加载的原因.但是,antisamy-esapi.xml的加载函数只检查user.home下的特定目录,配置的自定义目录,或者通过ClassLoader.getSystemResource()的结果.不确定为什么这些例程是分开的.经过几个小时的搞乱,我失去了耐心并复制了DefaultSecurityConfiguration.java并更正了getResourceFile()方法,以使用与loadConfigurationFromClasspath()相同的查找代码.然后我用这个类调用ESAPI.override(),它现在似乎正常工作.

java resources owasp esapi

5
推荐指数
1
解决办法
2523
查看次数

如何正确结束用户会话?

我一直致力于我的网站(PHP)的安全性,并且有很多信息可以摄取.我试图实现我在OWASP上研究过的安全性,但有一件事我有点紧张,除其他外,还有当用户注销时如何处理SESSIONS.

目前我正在使用的是:

session_destroy();
Run Code Online (Sandbox Code Playgroud)

但是,我已经读过我应该更改XRSF令牌并启动另一个SESSION,这样它就会强制用户重新提交登录凭据,从而明确地结束用户SESSION.

是否session_destroy()足够?

编辑

我已经下载了michael-the-messenger,我认为它是由Michael Brooks(Rook)创建的,它应该非常安全,我看到了一些我可能想要使用的代码.这是否可以安全地取代session_destroy()我正在使用的东西?

if($_SESSION['user']->isAuth())
{
    /* if they have clicked log out */
    /* this will kill the session */
    if($_POST['LogMeOut'] == 'true')
    {
        //When the user logs out the xsrf token changes.
        $tmp_xsrf = $_SESSION['user']->getXsrfToken();
        $_SESSION['user']->logout();
        $loginMessage = str_replace($tmp_xsrf, $_SESSION['user']->getXsrfToken(), $loginMessage);
        print layout('Authorization Required', $loginMessage);
    }
    else
    {
        header("Location: inbox.php");
        //user is allowed access. 
    }
}
else
{
    // code goes on ....
Run Code Online (Sandbox Code Playgroud)

登出

public …
Run Code Online (Sandbox Code Playgroud)

php security csrf owasp

5
推荐指数
1
解决办法
867
查看次数

OWASP ESAPI encodeForHTML带有一些允许的格式化标签

在Web项目中,我们使用PHP中的OWASP ESAPI进行输出编码.在某些方面,我们希望允许HTML的子集用于少量格式化选项(例如,<i><b>),同时禁止所有其他标记和特殊字符(因此它们是使用&...;语法进行实体编码的).

我看到以下可能性来实现这一目标:

  1. 告诉OWASP ESAPI编码器白名单/允许这些标记,以便它只对所有其他HTML标记和实体进行正确编码.但这似乎并不受支持.然而,我们可能(也许)写一个允许这个的补丁.
  2. 使用ESAPI进行编码后解码列入白名单的标记.这会受到攻击吗?
  3. 对此用例使用一些其他输出编码技术.还有其他图书馆吗?

特别是,我需要以下标记和属性列入白名单:

  • <br>
  • <i>
  • <b>
  • <u>
  • <big>
  • <small>
  • <sub>
  • <sup>
  • <font color="...">
  • <ul> + <li>
  • <ol> + <li>

请注意,我们的应用程序具有安全性.这意味着我们要实现的任何方法都应该只接受上面的标记(可能还有一些格式化标记),其他所有方法都必须经过实体编码.通过查看代码的(简单)代码/解释,毫无疑问,这应该是容易验证的.代码越短,评论越容易.完全手工编制的编码器并不适合这种情况.

html php security owasp esapi

5
推荐指数
1
解决办法
3471
查看次数

如何清理输入

当用户在Tomcat Webapp中提交表单时,我愿意使用“ OWASP ESAPI for Java”来清理用户的输入。

我曾经这样使用org.apache.commons.lang.StringEscapeUtils

public static String myEscapeHtml(String s)
{
    String s_escapedString = null;       
    s_escapedString = StringEscapeUtils.escapeHtml(s);
    return s_escapedString;
}
Run Code Online (Sandbox Code Playgroud)

我不知道这是否足以保护网络应用“合理地” ...

我想知道使用OWASP ESAPI应该编写哪些代码行来清理Tomcat webapp用户输入。

您能否举一个将一个或几个ESAPI“过滤器”(转义?,编码?...)应用于字符串进行净化的示例?

后端RDBMS是PostgreSQL。

Tomcat服务器可以在Linux服务器上运行,也可以在Windows服务器上运行。

感谢你并致以真诚的问候。

java input sanitize owasp esapi

5
推荐指数
1
解决办法
2万
查看次数

如何在服务器端使用JSON Sanitizer?

我想实现OWASP提到的“ JSON Sanitizer”验证。我的理解是,这需要在两个地方完成:

  1. 从客户端或其他系统接收的JSON数据(在请求中)-需要在服务器端进行清理,然后再进行处理

  2. JSON数据(作为响应)要发送到客户端-在发送到客户端之前,需要在服务器端清除此数据

仅在该JSON数据上的JSON清理库中调用一个清理方法就足够了吗?

这将执行所有消毒处理还是在这方面进行任何其他验证?

json owasp input-sanitization jsonexception

5
推荐指数
1
解决办法
9796
查看次数

是否防止nodejs中的开放重定向攻击安全?

我试图阻止开放重定向攻击.请查看下面的代码并检查安全性:

var = require('url');

// http://example.com/login?redirect=http://example.com/dashboard
app.route('/login', function (req, res, next) {
   var redirect = req.query.redirect,
        paths = url.parse(redirect); 

   if (paths.host !== req.headers.host) {
      return next(new Error('Open redirect attack detected'));
   }

   return res.redirect(redirect);
});
Run Code Online (Sandbox Code Playgroud)

是否足以防止开放重定向攻击或是否应该添加其他内容?

security owasp node.js express

5
推荐指数
1
解决办法
1096
查看次数

OWASP为什么不建议在客户端和服务器上同时解密密码?

由于GitHub和Twitter最近的问题:

我想知道,为什么不在客户端和服务器上同时解密密码的最佳实践?由于我不会更改已经是服务器端最佳实践的任何内容(盐,强哈希,HTTPS),因此只能更加安全。服务器将已散列的密码视为密码,并在存储之前再次对其进行散列。

  • 万一引发异常时我记录了整个请求,如果登录/注册请求中发生异常,我将永远无法访问用户纯文本密码
  • 我知道,如果有人可以通过MITM(许多公司在其专用网络中替换SSL证书)或日志或恶意服务器管理员来访问这些仅在客户端隐藏的密码,则他们将能够使用它在我的网站中进行身份验证,但无权访问纯文本密码,因此它绝不会损害其他站点和服务中的用户帐户(即使是那些重复使用密码的用户)

security authentication passwords owasp

5
推荐指数
1
解决办法
560
查看次数