鍍金池/ 問答/ 網(wǎng)絡(luò)安全問答
不舍棄 回答

重新定義一個(gè)對象然后push進(jìn)去內(nèi)容

雅痞 回答

這個(gè)好像沒有,得自己做

亮瞎她 回答

CoordinatorLayout的本質(zhì)是FrameLayout,肯定會發(fā)生遮擋的,要不給rv加個(gè)margin top

款爺 回答

@dudu: 非常感謝。

最終解決了。

問題主要是因?yàn)橛玫奈募姆种У牟煌?/p>

最一開始用的master分支的文件:

master-plug.vim

但是實(shí)際上對于我的vim8而言,有個(gè)專門的分支(我也不清楚與主分支的差別),用里面的文件就正常了。

vim8-plug.vim

可以頁面加載的時(shí)候先ajax請求,別點(diǎn)擊的時(shí)候請求

var clipboard = new Clipboard('.main-lottery--share');
//ajax請求
setTimeout(function () {
    $(".main-lottery--share").attr("data-clipboard-text", "aaaaaaaaaaa");
}, 0)

$('.main-lottery--share').click(function () {
    clipboard.on('success', function (e) {
        console.info(e);
        console.info('Action:', e.action);
        console.info('Text:', e.text);
        console.info('Trigger:', e.trigger);
        alert(e.text)
    });
});
艷骨 回答

400是客戶端錯誤,bad request,估計(jì)和cookie有關(guān)。

挽歌 回答
沒有絕對的安全

首先md5不能算是加密算法,因?yàn)樗菃蜗虻?、不可逆的,你沒法對經(jīng)過md5運(yùn)算過的密碼進(jìn)行“解密”而得到原始的明文密碼,但確實(shí)在md5與密碼發(fā)生關(guān)系時(shí)我們喜歡叫它“加密”。所以就算攻擊者知道你用了md5哈希算法,截獲了你“加密”后的密碼,即md5(password)(不妨設(shè)md5哈希函數(shù)為md5(),用戶明文密碼為password),也無法通過倒推得知用戶的明文密碼,只能暴力窮舉猜測用戶的密碼。

其次,就算攻擊者不知道password,只知道md5(password),也足夠了,他只要向服務(wù)器發(fā)送md5(password)便能通過認(rèn)證。而且驗(yàn)證的過程仍為明文對比,只是從對比明文密碼變成對比明文密碼的哈希值。為了解決這個(gè)問題,有人提出給密碼“加鹽”:服務(wù)器既不存儲明文密碼password,也不存儲md5(password),而是存儲md5(password)salt,這個(gè)salt即“鹽”。用戶每次登陸時(shí),服務(wù)器先生成一個(gè)動態(tài)的、短時(shí)間內(nèi)不會重復(fù)的salt發(fā)送給用戶,然后用戶將md5(md5(password) + salt)發(fā)回給服務(wù)器,服務(wù)器經(jīng)過同樣的運(yùn)算后對比結(jié)果,一致則通過驗(yàn)證。這樣一來,攻擊者就算截獲了saltmd5(md5(password) + salt),也無法倒推出md5(password),同時(shí)salt一經(jīng)使用,就會失效,攻擊者就無法通過重新發(fā)送md5(md5(password) + salt)來偽裝成用戶。

但上述做法有個(gè)問題(至少一個(gè)問題):設(shè)置密碼時(shí),用戶必須告知服務(wù)器md5(password),同時(shí)服務(wù)器上會明文存儲md5(password),如果設(shè)置密碼時(shí)md5(password)被截獲,或服務(wù)器的數(shù)據(jù)庫被入侵,攻擊者就會得知md5(password),從而就可以偽裝成用戶通過密碼驗(yàn)證了。而且,如果這個(gè)用戶在其它網(wǎng)站也使用了一樣的密碼(這是很常見的),其它網(wǎng)站又剛好使用了一樣的密碼驗(yàn)證方式,攻擊者就能同時(shí)獲得該用戶在多個(gè)網(wǎng)站的授權(quán)(撞庫)。這個(gè)問題的根本原因是設(shè)計(jì)者沒有擺脫“明文密碼”,用md5(password)來代替明文密碼與直接使用明文密碼沒有太大區(qū)別,因此有人提出,我們不要用md5(password),改用md5(password + salt)吧。這里的salt不是前面的salt,前面的是“動態(tài)鹽”,現(xiàn)在所說的是“靜態(tài)鹽”,為了區(qū)分,用dsalt代表動態(tài)鹽,用ssalt代表靜態(tài)鹽。那么登陸方式就變成:服務(wù)器存儲md5(password + ssalt)和與之配套的靜態(tài)鹽ssalt(靜態(tài)鹽在設(shè)置密碼時(shí)配套生成),登陸時(shí),服務(wù)器動態(tài)生成隨機(jī)的動態(tài)鹽dsalt,將ssaltdsalt一同發(fā)給用戶,用戶將md5(md5(password + ssalt) + dsalt)發(fā)回給服務(wù)器,服務(wù)器進(jìn)行同樣的運(yùn)算,結(jié)果一致則驗(yàn)證通過。這樣一來,就算攻擊者知道了md5(password + ssalt),也只是攻破了這個(gè)用戶在一個(gè)網(wǎng)站上的賬戶,而不能攻破該用戶使用的其它網(wǎng)站的賬戶——因?yàn)楣粽卟荒芡ㄟ^md5(password + ssalt)倒推出md5(password),且對于其它網(wǎng)站,靜態(tài)鹽ssalt也是不同的,通過md5(password + ssalt1)無法推出md5(password + ssalt2)。

如果你不想讓md5(password + ssalt)被截獲,你可以使用非對稱加密(詳情自行搜索),但非對稱加密對中間人攻擊(詳情自行搜索)無能為力,為了使非對稱加密能夠抵抗中間人攻擊,人們又搞出了基于信任的一套機(jī)制(詳情自行搜索),但信任又是可以背叛的……所以說沒有絕對的安全。

感興趣可以自學(xué)密碼學(xué)。

鹿惑 回答

char buf[] 這種寫法可以出現(xiàn)在結(jié)構(gòu)體里面,只能放在結(jié)構(gòu)體的最后,意義和 char buf[0] 一樣,就是占位用的,并不分配空間,可以方便訪問后面的內(nèi)存。

逗婦乳 回答

有大神幫幫忙嗎,搞了一天了,各種測試都沒有解決,謝謝了

離殤 回答

報(bào)錯都提示了 await要在async函數(shù)里
then(async function(){})

挽歌 回答

@luozz 圖片描述

麻煩你看下

終于解決了這個(gè)問題,在stackoverflow上面提問找到了解答:問答詳情

做法是添加消息隊(duì)列.為什么添加在這個(gè)問答:為什么添加消息隊(duì)列,大致意思是因?yàn)榈图壥髽?biāo)鍵盤鉤子默認(rèn)會馬上返回返回值,通過添加消息隊(duì)列就能解決.

添加了一個(gè)線程來控制鉤子,如果不添加好像程序不能按要求退出.

最后c++部分代碼:

// dllmain.cpp : Defines the entry point for the DLL application.
#include "stdafx.h"
#include "stdio.h"

HHOOK g_HookHwnd = NULL;
HHOOK g_hMouse = NULL;
HANDLE hThread = NULL;

// 鉤子子程
extern "C" _declspec(dllexport) LRESULT CALLBACK MyHookFun(int nCode, WPARAM wParam, LPARAM lParam)
{
    printf("in hook key function\n");
    // 這個(gè)Structure包含了鍵盤的信息
    /*typedef struct {
    DWORD vkCode;
    DWORD scanCode;
    DWORD flags;
    DWORD time;
    ULONG_PTR dwExtraInfo;
    } KBDLLHOOKSTRUCT, *PKBDLLHOOKSTRUCT;*/
    // 我們只需要那個(gè)vkCode
    PKBDLLHOOKSTRUCT pVirKey = (PKBDLLHOOKSTRUCT)lParam;

    // MSDN說了,nCode < 0的時(shí)候別處理
    if (nCode >= 0)
    {
        // 按鍵消息
        switch (wParam)
        {
        case WM_KEYDOWN:
        case WM_SYSKEYDOWN:
        case WM_KEYUP:
        case WM_SYSKEYUP:
            switch (pVirKey->vkCode)
            {
            case VK_LWIN:
            case VK_RWIN:
                return 1;  // 吃掉消息
                break;
            }
            return 1;
            break;
        }
    }

    return CallNextHookEx(g_HookHwnd, nCode, wParam, lParam);
}

extern "C" _declspec(dllexport) LRESULT CALLBACK  MyHookMouse(int nCode, WPARAM wParam, LPARAM lParam)
{
    printf("in hook mouse function\n");
    return 1;
}


HMODULE g_Module;
extern "C" _declspec(dllexport)  BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
    {

        break;
    }
    }
    return TRUE;
}


extern "C" _declspec(dllexport) DWORD WINAPI controllHook(LPVOID lpParamter)
{
    g_HookHwnd = SetWindowsHookEx(WH_KEYBOARD_LL, MyHookFun, g_Module, 0);
    g_hMouse = SetWindowsHookEx(WH_MOUSE_LL, MyHookMouse, g_Module, 0);
    while (true) {
        MSG msg;
        if (PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }
}


extern "C" _declspec(dllexport) void FuncHookDevice()
{
    if (!g_HookHwnd)
    {
        hThread = CreateThread(NULL, 0, controllHook, NULL, 0, NULL);
        
        printf("start hook\n");
        g_HookHwnd = SetWindowsHookEx(WH_KEYBOARD_LL, MyHookFun, g_Module, 0);

    }
}

extern "C" _declspec(dllexport) void FuncEndHook()
{
    printf("end hook\n");
    UnhookWindowsHookEx(g_HookHwnd);
    UnhookWindowsHookEx(g_hMouse);
    CloseHandle(hThread);
    g_HookHwnd = NULL;
}
巴扎嘿 回答

找到辦法了。

在計(jì)算機(jī)圖標(biāo)右鍵選擇管理。然后在新出來的窗口選擇設(shè)備管理器。在右側(cè)選擇網(wǎng)絡(luò)適配器。就會出來所有的網(wǎng)卡,然后對指定網(wǎng)卡進(jìn)行卸載即可。

clipboard.png

伐木累 回答
<Route path='/user/:id' component={ComponentList} />
怪痞 回答

已經(jīng)解決。

艷骨 回答

7.0以上引入了文件安全系統(tǒng),就是通過第三方的intent打開文件需要將文件進(jìn)行授權(quán)。另外一種是intent調(diào)用時(shí)是否允許第三方進(jìn)行使用,比如Activity android:exported="true"這個(gè)屬性是否設(shè)置,是否有其他應(yīng)用需要調(diào)用你的activity