Security

HTML5 Security cheat sheet

http://heideri.ch/jso/

OWASP (Open Web Application Security Project) cheat sheet

https://www.owasp.org/index.php/OWASP_Cheat_Sheet_Series

URIエンコード・デコード

★二度押し防止(トークンなど)

クライアント側

$(function () {

$('form').submit(function() {

$(this).find(':submit').attr('disabled', 'disabled'); // 無効になる

$(this).find(':submit').attr('visibility', 'hidden'); // 非表示になる

});

});

// 二度目の送信を防止

$('form').submit(function() {

$(this).submit(function() {

alert('XXX');

return false;

});

});

// 連続クリックを防止

$('a').click(function() {

$(this).click(function() {

alert('XXX');

return false;

});

});

サーバ側(SAStrutsでトークン利用)

import org.apache.struts.util.TokenProcessor;

@Resource

protected HttpServletRequest request;

@Execute(validator = false)

public String index() {

TokenProcessor.getInstance().saveToken(request);

return "index.jsp";

}

@Execute(validator = true, validate = "validate", input = "index.jsp")

public String result() {

// 方法1

if (!TokenProcessor.getInstance().isTokenValid(request, true)) {

throw new ActionMessagesException("不正なアクセス", false);

}

return "result.jsp";

}

// 方法2

public ActionMessages validate() {

ActionMessages errors = new ActionMessages();

if (!TokenProcessor.getInstance().isTokenValid(request, true)) {

errors.add(

ActionMessages.GLOBAL_MESSAGE,

new ActionMessage("errors.invalid", "Token"));

}

return errors;

}

★暗号化

←Simple Stronger→

MD5(Message-Digest Algorithm) SHA(Secure Hash Algorithm) PBKDF2 Bcrypt/Scrypt

※他サイトを参照

※他サイトを参照