小编Bra*_*rks的帖子

OWASP html sanitizer - 为什么它不转义某些实体?

我是 Owasp 的新手,它是 HTML sanitizer,发现使用我使用的任何策略,它都会将某些实体转义回字符。

例如这个字符串:

@ test !
Run Code Online (Sandbox Code Playgroud)

变成这样:

@ test !
Run Code Online (Sandbox Code Playgroud)

我想尽可能地让实体“保持原样”。如果它正在逃避他们,而不是逃避他们,我什至会理解它。

那么这可以用消毒剂吗?无论我尝试使用什么策略,它似乎都能做到。

这是我为我的简单测试运行的代码:

package com.my.company.test;

import org.junit.Test;
import org.owasp.html.PolicyFactory;
import org.owasp.html.Sanitizers;

import junit.framework.TestCase;

public class OwaspSanitizerTest extends TestCase {
  public static final PolicyFactory POLICY = Sanitizers.IMAGES;

  @Test
  public static final void testTextFilter() throws Exception {
      String data = "@ test !";
      String result = POLICY.sanitize(data);

      System.out.println(result);

      assertEquals("@ test !", result);
  }
}
Run Code Online (Sandbox Code Playgroud)

编辑:我问的原因是我希望我的用户输入尽可能匹配我们输出的内容。我知道在某些情况下这是不可能的,但我预计在这种情况下会是这样。

java sanitization owasp

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

仅在Java Filter中更改ContentType或CharacterEncoding如果ContentType === JSON

我正在尝试确保来自基于Jersey的java应用程序的所有JSON响应都在其ContentType标头中附加了UTF-8字符编码参数.

所以,如果它是一个JSON响应,我想响应报头的Content-Type

Content-Type:application/json; charset = UTF-8

EDIT: I know I can do this on a case by case basis, but I'd like to do it globally, so it affects all content responses that have a content type of "application/json".

如果我只是尝试在我的过滤器中设置字符编码,无论内容类型如何,它都可以正常工作.但是我只想在ContentType为"application/json"时设置字符编码.我发现response.getContentType()方法总是返回null,除非我先调用chain.doFilter.但是如果我在此之后尝试更改字符编码,它似乎总是会被覆盖.

import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.ws.rs.core.MediaType;

public class EnsureJsonResponseIsUtf8Filter implements Filter
{
    private class SimpleWrapper extends HttpServletResponseWrapper
    {
        public SimpleWrapper(HttpServletResponse response)
        {
            super(response);
        }

        @Override
        public String getCharacterEncoding()
        {
            return "UTF-8";
        }
    }

    @Override
    public void …
Run Code Online (Sandbox Code Playgroud)

java content-type filter jersey-2.0

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

ReactJS - 孩子如何找到其父母?

在ReactJS中是否有办法让组件找出它的父母是谁?

编辑1:无论做到这一点的优点,有没有办法?

我没有找到一种React方法来实现这一点 - 从我所看到的,我的想法是将回调传递给来自父级的子进程,并且子进程调用回调 - 不知道回调实际是在家长.

我试过设置一个"所有者"属性,这个想法似乎有效,但我想知道什么是最好的方法?

例如

<Parent>
  <Child owner={this}/>
</Parent>
Run Code Online (Sandbox Code Playgroud)

然后在子组件中,我可以做owner.method,它似乎工作正常.我知道这不是真正的父/子关系,但是我在测试中发现的最接近.

有些人可能会说回调是一种更干净的方式,但是在某种情况下(例如RadioButtonGroup和RadioButton)的父/子关系看起来很自然,并且在我看来,会因为知道这种关系而受益.

编辑2:所以这不可能吗?

关于不支持它的想法,我不喜欢的是HTML可以用零javascript标记 - 它暗示了默认功能 - 一些元素需要父母 - 他们被定义为其他元素的子元素(例如ul和li).这在JSX中不可能发生,因为如果元素之间存在交互 - 必须有javascript事件将组件绑定在一起 - 每次使用它们.设计师不能简单地像语法一样编写HTML - 有人必须介入并在其中放置一些javascript绑定 - 这会使维护更加困难.我认为这个想法对于覆盖默认行为是有意义的,但是应该支持默认行为.默认情况下需要了解您的父母或您的所有者.

javascript facebook reactjs

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

OpenID Connect - 如何在Java中验证id令牌?

我在我的java应用程序中实现了基本的OpenID连接流程,它似乎工作正常.

我想使用现有的java库来验证id令牌,详见Salesforce页面上有关实现OpenId connect的详细信息.

是否有任何现有的库可以很好地实现这一点?我已经解析了响应,我只需要找到一些简单的方法来验证id令牌是否有效.

java openid openid-connect

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

OAuth2:如何向OAuth2服务器发送"拒绝"请求?

当用户需要批准使用OAuth2进行身份验证的请求时,通常会给出"批准"和"取消"按钮.

当用户点击"取消"时,我应该发送什么?

作为开发人员,当用户点击"取消"时,我会向OAuth服务器发送什么内容以拒绝该请求?

我尝试使用一种grant"拒绝",但这不起作用.我知道要发送什么来获得批准,但似乎无法看到我应该发送什么来让OAuth服务器响应redirect_uri用户取消时的错误.

我已经查看了规范和这篇优秀的OAuth2 Simplified文章,但未能看到它.


注意:我没有在任何地方明确详细说明.是否假设我的应用程序应该自行管理?例如,在这种情况下,我的应用只是发布到自己的应用而不是发布到OAuth2服务器redirect_uri

{redirect-url}?error=access_denied&error_description=The+user+clicked+deny
Run Code Online (Sandbox Code Playgroud)

如果是这样,这似乎有点奇怪,因为所有实现客户端都必须使用错误代码和原因来构建url.

oauth-2.0

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

如何将数据通过管道传输到交互式 bash 脚本并将输出通过管道传输到另一个命令?

我想将数据通过管道传输到交互式命令中,并将交互式命令的输出作为另一个命令的输入接收。

例如,我希望能够执行以下操作:

echo "Zaphod" | hello.sh | goodbye.sh
Run Code Online (Sandbox Code Playgroud)

并有输出:

再见,赞福德

这是我对此的初步破解,但我错过了一些东西 ;-) 我实际上希望 hello.sh 从事物列表中进行选择。

你好.sh

echo Please supply your name
read NAME
echo "HELLO $NAME"
Run Code Online (Sandbox Code Playgroud)

再见.sh

MSG=$*
if [ -z "$1" ]
then
  MSG=$(cat /dev/stdin)
fi
echo "BYE $MSG"
Run Code Online (Sandbox Code Playgroud)

编辑:通过“从事物列表中选择”,我想我是在暗示我的真实用例,它从标准输出中获取任何东西,让我选择一个选项,然后将其传递给其他东西的标准输入...例如:

ls /tmp | select_from_list | xargs cat

将允许我列出 /tmp/ 中的文件,交互选择一个,然后 cat 文件的内容。

所以我的“select_from_list”脚本实际上是这样的:

#!/bin/bash
prompt="Please select an option:"
options=( $* )
if [ -z "$1" ]
then
  options=$(cat /dev/stdin)
fi

PS3="$prompt "
select opt in "${options[@]}" "Quit" ; do …
Run Code Online (Sandbox Code Playgroud)

bash zsh

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

可以使用Owasp Zap通过HTTPS连接代理所有http和https流量吗?

我刚刚开始使用Zap,并且已成功在Firefox和Chrome中运行它.

我想用它来自动为非https网站提供SSL证书.

所以,例如,我希望它能够服务

http://example.com

https://example.com

即使example.com通常不提供SSL证书.

这将允许我测试本地开发站点,而无需为它们创建自签名证书,或者必须使用Web服务器配置证书.

我试图将我的开发端口(18000)移植到端口443,但我的网络服务器没有提供SSL证书,连接失败.我也试过这个与sni终结者 zap插件没有运气,虽然它感觉它是超级接近!

有什么建议?

reverse-proxy owasp zap

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

RabbitMQ集群 - 更新负载平衡集群中的节点的最佳实践?

简介:更新负载平衡群集中的节点的最佳做法是什么?

我们在ha代理负载均衡器后面使用RabbitMQ Cluster来支持我们的客户轻松集群,如RabbitMQ文档中所建议的那样

尽管文档提出了这一点,但它们没有描述从群集中删除节点以进行升级的最佳方法,并将其重新放入.

这是我认为我们应该使用的过程:

  1. 通过rabbitmqctl stop_app在节点本身上运行来从群集中删除节点,并等待它关闭
  2. 在haproxy中将节点置于maint模式
  3. 执行maint工作
  4. 将节点加入群集,确认它重新加入并同步.
  5. 在haproxy中从maint模式中删除节点

但我已经建议我们首先从ha代理中删除它,基本上交换上面的步骤1和2

以下是其他团队成员建议的流程:

  1. 在haproxy中将节点置于maint模式
  2. 通过rabbitmqctl stop_app在节点本身上运行来从群集中删除节点,并等待它关闭
  3. 执行maint工作
  4. 将节点加入群集,确认它重新加入并同步.
  5. 在haproxy中从maint模式中删除节点

这是最好的方法吗?

haproxy rabbitmq

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

Java和XSS:如何html转义JSON字符串以防止XSS?

在Java中,我们有一些代码可以获取复杂的java对象并将其序列化为json.然后它将json直接写入页面的标记,在脚本标记中,将其分配给变量.

// Get object as JSON using Jackson
ObjectWriter jsonWriter = new ObjectMapper().writer().withDefaultPrettyPrinter();
String json = jsonWriter.writeValueAsString(complexObject);

// Write JSON out to page, and assign it to a javascript variable.
Writer out = environment.getOut();
out.write("var data = " + json);
Run Code Online (Sandbox Code Playgroud)

复杂对象可以包含最终用户内容,这可能会使我们受到XSS攻击.

如何获取每个json属性HTML转义的复杂java对象的json版本,以防止XSS注入?

我已经阅读了OWASP XSS指南,到目前为止我提出的最好的是HTML,它会转义整个JSON字符串,然后取消引号,因此可以将其分配给javascript中的变量.我确信有更好的方法可以做到这一点,但这似乎有效.有什么建议?

private String objectToHtmlEscapedJson(Object value) {
    try {
        String result = jsonWriter.writeValueAsString(value);
        result = StringEscapeUtils.escapeHtml(result);
        result = result.replace("&quot;", "\"");
        return result;
    } catch (JsonProcessingException e) {
        return "null";
    }
}
Run Code Online (Sandbox Code Playgroud)

java xss json jackson

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

如何将HttpClient与任何ssl证书一起使用,无论它有多"糟糕"

我在一个只用于抓取公共数据的网络爬虫中使用Apache HttpClient.

我希望能够使用无效证书抓取网站,无论多么无效.

我的抓取工具不会传入任何用户名,密码等,也不会发送或接收敏感数据.

对于这个用例,我会抓取http一个站点的版本,如果它存在,但有时它当然不会.

如何使用Apache的HttpClient完成这项工作?

我尝试了一些像这样的建议,但是对于一些无效的证书,它们仍然失败,例如:

failed for url:https://dh480.badssl.com/, reason:java.lang.RuntimeException: Could not generate DH keypair
failed for url:https://null.badssl.com/, reason:Received fatal alert: handshake_failure
failed for url:https://rc4-md5.badssl.com/, reason:Received fatal alert: handshake_failure
failed for url:https://rc4.badssl.com/, reason:Received fatal alert: handshake_failure
failed for url:https://superfish.badssl.com/, reason:Connection reset
Run Code Online (Sandbox Code Playgroud)

请注意,我已经尝试了这个,我的$JAVA_HOME/jre/lib/security/java.security文件jdk.tls.disabledAlgorithms设置为空,以确保这不是一个问题,我仍然得到如上所述的失败.

java apache-httpclient-4.x

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