'2016/12'에 해당되는 글 5건

  1. 2016.12.29 ACID, BASE, CAP
  2. 2016.12.10 마우스 가운데 버튼 활용하기
  3. 2016.12.10 자바스크립트에서 XSS 예방하기
  4. 2016.12.09 Debugging JavaScript in a WebBrowser Control from Visual Studio
  5. 2016.12.06 Jmeter Test Script Recorder 사용시 Chrome 인증서 등록하기
2016. 12. 29. 05:32

ACID, BASE, CAP

2016. 12. 10. 06:49

마우스 가운데 버튼 활용하기

요즘 Logitech M705 마우스를 사용하고 있는데, 평소 가운데 휠 버튼을 자주 사용하는데 이 마우스는 가운데 버튼을 누르면 잘 동작하지 않아서 너무 불편하다고 생각했다.


그래서 다른 마우스를 사려고 몇주동안 검색만 하다가 딱 맞는게 없어서 구입을 안하고 있었는데, M705 의 엄지 버튼을 가운데 휠로 사용하니 문제가 해결되었다.


로지텍의 초고속 휠은 스크롤은 편한데 내가 자주 사용하는 가운데 버튼이 잘 눌러지지 않아서 못쓰겠다고 생각했는데 그냥 엄지 쪽에 있는 버튼을 가운데 버튼으로 사용하니 문제가 해결되었다.


그래서 가운데 버튼을 대체하는 엄지 버튼을 막 테스트해보다가 새로운 걸 알았다.


1. 크롬이나 익스플로어의 탭에서 마우스 가운데 버튼을 누르면 창이 닫힌다. 와우!


2. 원래 알고 있는 기능인데 태스크바에서 실행 중인 앱 위에서 마우스 가운데 버튼을 누르면 하나 더 실행된다.


휴, 돈 굳었다. ㅋ





2016. 12. 10. 04:09

자바스크립트에서 XSS 예방하기

참고: 

Preventing XSS (Cross Site Scripting) in Javascript

XSS (Cross Site Scripting) Prevention Cheat Sheet

Google Application Security - XSS


XSS 를 피하기 위해서는, HTML 을 직접 추가하는 것을 피해야 한다. DOM 의 .html(), .innerHTML 을 사용하지 말고, 대신 .append(), .prepend(), .before(), .after() 등을 사용해야 한다.



위험한 예)


jQuery.ajax({
    url: 'http://any-site.com/endpoint.json'
}).done( function( data ) {
    var link = '<a href="' + data.url + '">' + data.title + '</a>';
 
    jQuery( '#my-div' ).html( link );
});



data.title 이 만약 <script>alert( "haxxored");</script>;? 을 포함하고 있다면?



대신, 올바른 접근 방법은 프로그래밍적으로 새로운 DOM 노드를 생성하고, 이를 해당 DOM 에 추가해야 한다.


jQuery.ajax({
    url: 'http://any-site.com/endpoint.json'
}).done( function( data ) {
    var a = jQuery( '<a />' );
    a.attr( 'href', data.url );
    a.text( data.title );
 
    jQuery( '#my-div' ).append( a );
});


jQuery 또는 브라우저의 DOM API 를 통해서 데이터를 전달함으로써, 값들이 적절하게 변환되고 (sanitized) 안전하지 않은 HTML 이 페이지에 추가되는 것을 제거한다.


※ 성능은 HTML 직접 삽입하는 방식(.html, .innerHTML)이 기술적으로 더 빠르다, 이유는 브라우저가 HTML 을 파싱하는데 최적화 되어 있기 때문이다. 최적의 방법은 메모리에 최대한 큰 오브젝트를 만들고 이를 한번에 DOM 에 추가함으로써 DOM 노드의 추가를 최소화 하는 것이다. 



2016. 12. 9. 06:27

Debugging JavaScript in a WebBrowser Control from Visual Studio

<< 웹뷰 자바스크립트 디버깅하기 >>


참고 : http://blogs.perl.org/users/mark_leighton_fisher/2011/09/debugging-javascript-in-a-webbrowser-control-from-vs2010.html


You can debug JavaScript executing inside a WebBrowser control embedded in your .NET 4.0 application from VS2010 (Visual Studio 2010), but it takes a little effort.


  1. Enable Script Debugging (both IE and Other) in Internet Explorer.
  2. Disable friendly HTTP messages in Internet Explorer.
  3. Enable Display a notification about every script error in Internet Explorer.
  4. Modify VS2010 to debug Script from the Attach Process dialog. Please note that you cannot debug both JavaScript (Script) and .NET 4.0 code at the same time. (I don't know why.)
  5. Add a debugger statement at the start of your JavaScript.
  6. Start your WebBrowser-embedded application without debugging (Ctrl-F5).
  7. When your application hits the JavaScript debugger; statement, select your current instance of VS2010.
  8. Voilà! You can now debug the JavaScript executing inside the WebBrowser control in your .NET 4.0 application. 

여기서 꿀팁은 debugger statement 를 javascript 에 추가해서 디버깅하는 것 같다. 



IE 에서 참고해야할 설정
 

Open Internet Explorer, go to Settings, tab Advanced, and, in the “Navigation” section:


  • Uncheck “disable script debugging” (both IE and Other)
  • Uncheck “Display friendly HTTP messages”
  • Check “Display a notification about every script error” 



2016. 12. 6. 01:29

Jmeter Test Script Recorder 사용시 Chrome 인증서 등록하기

Jmeter Test Script Recorder 를 사용하려면, Proxy 를 설정한 후 사이트를 접속해야 하는데, 이때 https 에 대해서 레코딩을 하면 인증서 오류로 인해서 진행하기가 쉽지 않다.


이때 구글링을 해서 --ignore-certificate-errors 옵션을 붙이 크롬을 실행해도 마찬가지로 https 접속하면 신뢰할 수 없는 사이트라는 경고와 함께 제대로 표시가 되지 않았다.


이 때는 약간 위험하긴 하지만 다음과 같이 하면 해결할 수 있다. JMeter 의 bin 파일 하위에 보면  ApacheJMeterTemporaryRootCA.crt 라는 테스트용 임시 인증서 파일이 생성되어 있는데 이를 크롬의 인증서 설정 기능에서 추가해 주면 문제없이 테스트할 수 있다.


설정 > 고급 설정 표시 > HTTPS/SSL > 인증서 관리


'Trusted Root Certification Authorities' 탭 > Import... 버튼 클릭



해서 해당 인증서 파일 추가하고, IE 에서 Proxy 설정을 한 후 진행하면 문제없이 잘 된다.