小编Seb*_*iuc的帖子

对使用gorilla/mux URL参数的函数进行单元测试

这是我正在尝试做的事情:

main.go

package main

import (
    "fmt"
    "net/http"

    "github.com/gorilla/mux"
)

func main() {
    mainRouter := mux.NewRouter().StrictSlash(true)
    mainRouter.HandleFunc("/test/{mystring}", GetRequest).Name("/test/{mystring}").Methods("GET")
    http.Handle("/", mainRouter)

    err := http.ListenAndServe(":8080", mainRouter)
    if err != nil {
        fmt.Println("Something is wrong : " + err.Error())
    }
}

func GetRequest(w http.ResponseWriter, r *http.Request) {
    vars := mux.Vars(r)
    myString := vars["mystring"]

    w.WriteHeader(http.StatusOK)
    w.Header().Set("Content-Type", "text/plain")
    w.Write([]byte(myString))
}
Run Code Online (Sandbox Code Playgroud)

这将创建一个基于端口的基本http服务器,8080该服务器回显路径中给出的URL参数.因此,http://localhost:8080/test/abcd它将回写包含abcd在响应正文中的响应.

GetRequest()函数的单元测试在main_test.go中:

package main

import (
    "net/http"
    "net/http/httptest"
    "testing"

    "github.com/gorilla/context"
    "github.com/stretchr/testify/assert"
)

func TestGetRequest(t *testing.T) …
Run Code Online (Sandbox Code Playgroud)

unit-testing go gorilla testify

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

电子邮件网络钓鱼中的Homoglyph攻击检测

主要问题

我正在开发一个Java中的API,需要检测网络钓鱼电子邮件中品牌的使用(例如PayPal,Mastercard等).

显然,攻击者使用不同的策略来瞄准这些品牌,以便更难以发现.例如" rnastercard "看起来非常相似," 万事达 ",可以愚弄不知情的用户.

此时,我可以使用模糊字符串搜索的形式轻松检测这些品牌的拼写错误.然而,我面临的问题是攻击者使用同性恋改变特定品牌的名称但保持相同的视觉解释.

同形文字攻击用[a-zA-Z]模式中的一个字符替换一个看起来相似但超出此范围的字符.例如,使用特定字符集的攻击者可以使用看起来像P 的希腊字母RHO来定位PayPal.这种攻击中的PayPal品牌名称将成为:

[希腊字符RHO] [a] [y] [希腊字符RHO] [a] [l]

由于我对Unicode或ISO标准等不同标准及其编码几乎没有经验,因此我请求您的建议.有没有办法以编程方式确定[a-zA-Z]集之外的字符的视觉等效,以便结果是[a-zA-Z]集内的字符?

您的一些答案可能基于特定的字符集,我正在寻找一种解决方案,可以帮助我确定电子邮件中可用的每个字符集的此类表示.

我没有读过邮件交换的RFC标准,但它们在我的列表中,我现在问这个问题是为了节省时间.

可能但不可行的解决方案

我已经想到了一些解决方案,但它们对我的特定情况不可行,因为它们非常占用CPU并且具有类似黑客的特性(读"可能很容易被破坏").

第一种解决方案是将[a-zA-Z]之外的字符以其形式写入图像,并将该图像提供给OCR API,以获得最接近的[a-zA-Z]表示.

第二种解决方案是为每个字符集创建一个映射,映射的关键字是字符本身,值将是它的[a-zA-Z]等价物.该地图要么必须手工完成,要么使用上述第一种解决方案.

额外细节

这里已经问过这个问题.然而,尽管我进行了编辑工作,但这个问 可能是因为我没有很好地表达自己,我没有正确地标记这个问题.

在那个特定的问题中,我还解决了一些关于Java使用的字符集的问题,这些字符集使实际问题变得模糊不清.但是,如果您认为需要在答案中包含此类信息,我将不胜感激,因为这样可以节省一些时间来研究这些问题.纯文字攻击的问题和Java或*javax.mail.**中的字符集问题是分开但相互关联的.

正如主要问题中描述的同性恋攻击的一个特定例子是这封电子邮件.谨防!这是使用此特定攻击方法的网络钓鱼电子邮件的实际内容,因此请勿遵循该电子邮件中包含的任何链接.

我用我认为合适的标签标记了这个问题,如果你不同意请提供这个问题的编辑,而不是投票关闭.

java security email phishing homoglyph

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

Bluebird Promise 警告:.then 只接受函数但已通过

使用"bluebird": "^3.4.6"

var Promise = require('bluebird');

Promise.config({
    warnings: true,
    longStackTraces: true,
    cancellation: true,
    monitoring: true
});


function getPromise1(param1, param2) {
    return new Promise( (resolve, reject) => { 
        console.log(param1, param2); 
        resolve();
    } );
}

function getPromise2(param1, param2) {
    return new Promise( (resolve, reject) => { 
        console.log(param1, param2);
        resolve();
    } );
}


function mainFunc(param1, param2) {
    getPromise1(param1, param2)
        .then(getPromise2(param1, param2));
}

mainFunc("param1", "param2");
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我得到:

$ node index.js
param1 param2
param1 param2
(node:95984) Warning: .then() only accepts functions but was passed: …
Run Code Online (Sandbox Code Playgroud)

node.js promise bluebird

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

尝试将文件写入数组时的运算符<<错误

我正在尝试读取一个文件(该文件可以有任意数量的数字,但不会超过500个)并将其放入数组中。

稍后,我将需要使用该数组进行许多操作。

但是到目前为止,这小段代码使我no match for operator<<处于while循环中,我不知道该怎么办。

我是新来的,将不胜感激。

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main () {
    string line;
    ifstream myfile ("array_pgmdata.txt");
    int index = 0;
    string myArray[index];

  if (myfile.is_open())
  {

    while (! myfile.eof() )
    {
      getline (myfile,line);
      myArray[index++] << line;
    }
  }

  else cout << "Unable to open file"; 

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ arrays

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