잊지 않겠습니다.

모든 입력은 위조될 수 있다. - 사용자의 입력을 신뢰하지 말아라.

변조 가능한 모든 데이터들:
  • GET QueryString
  • POST로 전송 가능한 Data
  • Cookie
  • HTTP Header에 저장된 데이터
XSS(Cross-site scripting)
: Web Application에 피해를 입히는 가장 유명하고 널리 알려진 방법
Input Message를 이용해서 Web Page에 공격자의 Form 또는 Javascript를 삽입하여 공격하는 방법

* 대응책 : 사용자가 제공한 모든 데이터는 인코딩을 통해 출력한다.

* Html.Encode(string message)를 통해 ASP .NET MVC에서 가능하다. MVC2에서는 <%: %>으로 간단히 표현 가능하다.
* ASP .NET에서 제공되는 ValidationRequest를 이용하는 방법
 - HTML, Javascript와 유사한 모든 입력을 차단한다.
 - 사용자의 입력이 매우 제한되기 때문에 추천되지 않는 방법이다.

Session Hijacking
: Session ID cookie(ASP.NET_ SessionID로 만들어진다.)를 저장하고, 자체 브라우저를 이용해서 신원을 위장 가능하다.

* 대응책
  - Client IP를 Session의 값에 같이 저장해서, Session을 발급한 Client를 재확인하는 절차를 거친다.
  - HttpOnly flag를 설정한다. 이 경우, Cookie를 javascript를 이용해서 Hijacking 하는 것이 불가능하게 된다.

CSRF
: 사용자가 정상적인 로그인을 거친 이후에 다른 사이트에 Session이 유지된 상태로 이동한 이후 타 사이트에서 값을 넘기는 것으로 사용자의 정보를 훔쳐갈 수 있다.

* 대응책
  - 사용자에게 특화된 토큰이 보안적인 요청안에 포함되도록 한다. ASP .NET MVC에서는 이러한 기법을 이미 사용하고 있다.

  <%using(Html.BeginForm()) { %>
      <%= Html.AntiForgeryToken() %>
  <%}%>

  [AcceptVerbs(HttpVerbs.Post)][ValidateAntiForgeryToken]
  public ActionResult SubmitUpdate()

SQL Injection
: SQL Query문을 Query String 또는 POST 데이터에 넣어서 데이터를 위변조한다.

* 대응책
  - 입력을 Encoding해서 방어
  - 매개변수를 사용하는 Query를 이용해서 방어
  - ORM Mapping을 이용해서 방어 (LINQ SQL, ASP .NET Entity Framework, NHibernate etc..)


Posted by Y2K
,
wrong javascript in jquery
<div id="mylinks">
    <a href="#" onclick="if(confirm('Follow the link?')) location.href='/someUrl1';">Link1</a>
    <a href="#" onclick="if(confirm('Follow the link?')) location.href='/someUrl2';">Link1</a>
</div>

good javascript in jquery
<div id="mylinks">
    <a href="/someUrl1">Link1</a>
    <a href="/someUrl2">Link2</a>
</div>

<script type="text/javascript">
    $("mylinks a").click(function() {
        return confirm('Floow the links?');
    });
</script>

Javascript를 사용할 때 '튀지 않는' Javascript를 만드는 방법
  * Javascript를 전혀 사용하지 않으면서 응용프로그램이나 기능을 구축해얒 한다. 실행 가능한 기능들을 채택하고 일반적인 HTML/CSS의 한계를 받아드린다.
  * 원 markup을 건드리지 않는 범의 한에서 Javascript를 사용한다. 그리고, 되도록 Javascript를 별도의 파일로 분리하자. 개별적으로 인식이 가능하고, 관리할 수 있는 방법을 제시해야지 된다.

Posted by Y2K
,

트위터 시작

시끌벅적 2010. 1. 21. 00:03
트위터를 시작한 다음 거의 블로그레 안들어오게 되었다 보는 재미 말하는 재미....결국이것이 소통하는 재미가 아닐까
소통이라는 것이 별거있나 진심으로 듣고 진심을 가지고 이야기하고 바로 이런것이 소통인거지 뭐

iPhone 에서 작성된 글입니다.
Posted by Y2K
,