웹언어로 웹페이지를 코딩 할 때의 필수 규칙.

웹페이지는 기본적으로 HTML로 구성하며
웹언어로 만들더라고 마지막 출력물은 HTML
즉, HTML을 잘 만드는게 목표?


이 게시물은 HTML+PHP 를 기준으로 설명을 합니다.

  • htmlspecialchars()를 제발 좀... 사용하라!
    • <,>,&,",' 등이 엔티티로 바꿔서 출력된다.
      사용 안하여 그대로 출력될 경우,
      XXS 등의 공격을 받을 수도 있다.
    • <input name="search" type="text" value="<?=$_GET['search']?>" />
      ->
      <input name="search" type="text" value="<?= htmlspecialchars($_GET['search'])?>" />
    • PHP의 값을 HTML로 출력한다면 꼭 사용하라!
  • form의 action에 $PHP_SELF는 필요 없다.
    • $PHP_SELF(= $_SERVER['PHP_SELF']) 은 현재의 URL의 웹 파일 경로를 나타내기 위한것이지만
      form 태그의 action에서 <form action=""> 처럼해도 현재의 URL을 나타낸다.(HTML규칙에 위배되지도 않는다!)
      즉, 빈값이 현재 페이지를 의미한다.
    • $PHP_SELF 가 문제가 되는 이유는
      http://xxxx.com/test.htm/'"><script>{{스크립트코드}}</script>?test=test1 (굵은 부분이 경로 조작)
      위처럼 할 경우 $PHP_SELF는  /test.htm/'"><script>{{스크립트코드}}</script> 가 되버려서
      결과적으로
      <form action="/test.htm/'"><script>{{스크립트코드}}</script>" >
      처럼 되어서
      {{스크립트코드}}가 실행되어 버린다.
    • 여기서도 htmlspecialchars()를 사용했다면 에러는 나겠지만, {{스크립트코드}}는 동작되지 않는다.
      꼭 써야한다면, htmlspecialchars()를 사용하라! 제발...좀...
    • 문제점 (XXS)
      • 스크립트 코드에 쿠키값을 다른 사이트로 전송하게 만들었다면?
        • 쿠키를 유출해서 타인이 로그인 할 수도 있다.
      • 악의적으로 URL을 링크시켜 놓고 그 링크에 방문한다면?
        • 방문하는것 만으로도 공격을 당하게 된다.



댓글
  • No Nickname
    No Comment
  • 권한이 없습니다.
    {{m_row.m_nick}}
    -
목록형 📷 갤러리형
제목
[기본형] HTML (with 부트스트랩5.3 , jquery 3.7, vue.js)
유용한 리눅스(LINUX) 명령어
[공지] 기술 게시판
4.28
4.29
4.30
5.1
5.2
5.3
5.4
5.5
5.6
5.7
5.8
5.9
5.10
5.11
5.12
5.13
5.14
5.15
5.16
5.17
5.18
5.19
5.20
5.21
5.22
5.23
5.24
5.25
5.26
5.27
5.28
5.29
5.30
5.31
6.1