小编Bor*_*nov的帖子

Struts 2编码输入参数以避免XSS

我有一个使用Struts 2构建的应用程序.它存在跨站点脚本(XSS)攻击的一些问题.我想以类似于JSP的方式编码一些动作输入参数<c:out value="${somevalue}"/>在Struts 2中有什么简单的方法吗?Java API方法会很好.

编辑我找到了这个 - http://www.owasp.org/index.php/Talk:How_to_perform_HTML_entity_encoding_in_Java

有经验吗?

java security xss struts2

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

使用 Gradle 配置 Swagger 代码生成器。提供的 Gradle 脚本如何工作?

我在这里与此代码作斗争:https : //github.com/thebignet/swagger-codegen-gradle-plugin-example

尝试使用 Swagger 代码生成器和 Gradle 构建 REST 客户端。我是 Gradle 的新手,看着这个例子很令人困惑,因为有多个变量/属性/名称,我不知道它们来自哪里或它们做什么。特别是这部分:

clean.doFirst {
    delete(swaggerOutputDir)
}

configurations {
    swagger
}

sourceSets {
    swagger {
        compileClasspath = configurations.swaggerCompile
        java {
            srcDir file("${project.buildDir.path}/swagger/src/main/java")
        }
    }
    main {
        compileClasspath += swagger.output
        runtimeClasspath += swagger.output
    }
    test {
        compileClasspath += swagger.output
        runtimeClasspath += swagger.output
    }
}

compileSwaggerJava.dependsOn generateApi
classes.dependsOn swaggerClasses
compileJava.dependsOn compileSwaggerJava
Run Code Online (Sandbox Code Playgroud)

swagger.output - 这是从哪里来的?

类、compileJava、swaggerClasses、compileSwaggerJava 这些都是什么?它们似乎没有在任何地方定义并且似乎是随机命名的?

然后自述文件说:为了生成 Swagger 源代码,请启动以下任务。generateApi : 生成 Swagger 代码

Swagger代码到底是从哪里来的?

任何澄清都非常感谢,我相信会帮助更多的人。

gradle swagger gradle-plugin swagger-codegen

4
推荐指数
1
解决办法
4896
查看次数

提高折扣的渐进非线性算法

一个系统必须支持100个用户,支持的价格是3

系统必须支持10 000个用户,支持价格为1

我必须设计一个算法来给我两者之间的价格,所以它会随着用户数逐渐增加.

我试图将用户数乘以0.0002得到折扣价值,我得到了

300位用户*0.0002 = 0.06折扣,因此支持价格= 2.94总收入= 300*2.94 = 882

5000个用户*0.0002 = 1个折扣,因此支持价格= 2总收入= 5000*2 = 10 000

8000个用户*0.0002 = 1.6折扣,因此支持价格= 1.4总收入= 8000*1.4 = 11 200

10 000名用户*0.0002 = 2折扣,因此支持价格= 1总收入= 8000*1.4 = 10 000

所以你看到一个给定的点后,我实际上有更多的用户,但收到的付款较少.

我不是数学家,我现在这不是一个编程问题,但我不知道在哪里可以提出这个问题.如果有人可以帮我提供任何信息,我将不胜感激.谢谢!

algorithm math

3
推荐指数
1
解决办法
414
查看次数

正则表达式,匹配特定XML标记的内容,但没有标记本身

我整天都在反对这种正常表达.

任务看起来很简单,我有许多XML标签名称,我必须替换(掩盖)他们的内容.

例如

<Exony_Credit_Card_ID>242394798</Exony_Credit_Card_ID>
Run Code Online (Sandbox Code Playgroud)

必须成为

<Exony_Credit_Card_ID>filtered</Exony_Credit_Card_ID>
Run Code Online (Sandbox Code Playgroud)

有多个这样的标签具有不同的名称

如何匹配内部的任何文本,但没有匹配标签本身?

编辑:我应该再次澄清.分组然后使用该组以避免替换内部文本在我的情况下不起作用,因为当我将其他标签添加到表达式时,后续匹配的组号不同.例如:

"(<Exony_Credit_Card_ID>).+(</Exony_Credit_Card_ID>)|(<Billing_Postcode>).+(</Billing_Postcode>)"
Run Code Online (Sandbox Code Playgroud)

使用字符串的replaceAll"$1filtered$2"不起作用,因为当正则表达式与Billing_Postcode匹配时,它的组是3和4而不是1和2

java regex

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

我可以将"new"匿名函数传递给addEventListener

我使用这样的代码将参数传递给事件处理函数.但是,在这种特殊情况下,循环会导致问题.在所有activeVisual调用中只能访问最后一个linkTags [i].这与传递参数的匿名函数对于整个循环是一个相同的事实有关.

  for (var i = 0; i < linkTags.length; i++) {
    addCrossEvent(linkTags[i], "click", launchLink);
    addCrossEvent(linkTags[i], "mousedown", 
      function(evt) {
        activeVisual(evt, linkTags[i]);
      });
  }
Run Code Online (Sandbox Code Playgroud)

现在,我记得在匿名函数声明之前尝试添加new,如下所示:

  for (var i = 0; i < linkTags.length; i++) {
    addCrossEvent(linkTags[i], "click", launchLink);
    addCrossEvent(linkTags[i], "mousedown", 
      new function(evt) {
        activeVisual(evt, linkTags[i]);
      });
  }
Run Code Online (Sandbox Code Playgroud)

那没起效.activeVisual永远不会被调用.有人可以向我解释为什么以及如何让它成功呢?

更新最终解决方案

感谢下面的所有回复,我的工作代码现在看起来像这样:

  // Function that provides pass of event handling parameters with separate copy in each loop
  function callbackHandler(index) {
    return function(evt) {
      activeVisual(evt, linkTags[index]);
    }
  }
  ...
  for (var i = 0; …
Run Code Online (Sandbox Code Playgroud)

javascript events arguments anonymous-function

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