Mysql 한글검색

DB 2012. 3. 17. 20:29
SELECT * FROM table WHERE BINARY(text) like %한글%


column 의 type은 BINARY 또는 VARBINARY 여야 한다.

(기존에 VARCHAR 였어도 상관없다. column type을 바꾸면 아무 부작용 없이 컨버팅 된다)


ibatis 에서는 다음과 같이 쓰자.

 <select id="getArticleListWithTitle" parameterClass="HashMap" resultClass="beans.Article">
  SELECT *
  FROM board_board
  WHERE boardName = #boardName:VARCHAR# AND BINARY(title) LIKE CONCAT('%',#titleKeyword:VARCHAR#,'%') 
  ORDER BY articleIndex DESC
 </select>


**
그렇다면 '%' 는 어떻게 표현할까?

mysql 에서는 \% 로 표현한다.

인자로 넘겨주기 전에 replace 로 % 를 \\% 로 바꾸어 주도록 하자. ( titleKeyword.replace("%", "\\%") )



beans class의 member 의 type을 바꿀 필요는 없다.

다만 아래와 같은 처리가 setter 에서 필요하다.

Util.toHTML() 은 문맥과 무관하니 없다고 생각하고 보자.

 public String getTitle() {
  return title;
 }
 public void setTitle(byte[] title) {
  try {
   this.title = Util.toHtml(new String(title,"utf-8"));
  }
  catch(Exception e)
  {
   e.printStackTrace();
  }
 }

'DB' 카테고리의 다른 글

Mysql에서 한글이 깨질 때  (0) 2012.03.17
Mysql 대소문자 구분해서 쿼리하기  (0) 2012.03.17
Mysql MYSQLNonTransientConnectionException  (0) 2012.03.17
Mysql 에서 foreign key 설정  (0) 2012.03.17
Posted by 휘사마
,

Mysql 에서 foreign key 설정

DB 2012. 3. 17. 20:28

table A에 primary key인 column pk 가 있고 이를 다른 table B,C,D ... 에서 foreign key로 설정하려고 했다.

그런데 2개 이상 지정을 하려고 하니 에러가 나며 테이블이 만들어지지 않았다.

이유는 다음과 같다.

[CONSTRAINT [symbol]] FOREIGN KEY
    [index_name] (index_col_name, ...)
    REFERENCES tbl_name (index_col_name,...)
    [ON DELETE reference_option]
    [ON UPDATE reference_option]

reference_option:
    RESTRICT | CASCADE | SET NULL | NO ACTION

요기 symbol 의 이름이 database를 통틀어 unique 해야되기 때문이었다.

저게 왜 db를 통틀어 unique 해야되도록 만들어 놓은지 이유를 잘 모르겠다. -_-;


http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html

http://www.lovelgw.com/Blog/207

'DB' 카테고리의 다른 글

Mysql에서 한글이 깨질 때  (0) 2012.03.17
Mysql 대소문자 구분해서 쿼리하기  (0) 2012.03.17
Mysql MYSQLNonTransientConnectionException  (0) 2012.03.17
Mysql 한글검색  (0) 2012.03.17
Posted by 휘사마
,

통신보안

네트워크 2012. 3. 16. 14:18

1.
완벽한 통신보안은 존재하지 않는다.

휴대폰과 마찬가지로 SSL도 인증서 발급 기관에 정부가 압력을 넣으면 보안을 모두 브레이킹 할 수 있나니..

그러니까 구리갑옷입고 말없이 암호화된 파일이 담긴 USB나 주고받는게 좋다[..]




2. 
피싱 사이트에 걸리면 끝장이다.

https고 뭐시고 간에 그냥 아이디 비번 유출되지 않는가.



3.
ssl strip attack은 man in the middle attack 이다.

피싱 사이트와 유사한 점도 있으나 기본적으로 다르다.

end to end 사이에 있는 그 어떤 자라도 ssl strip 공격을 수행할 수 있다.

피싱 사이트 같은 것을 쓰지 않으면 라우터를 점거해야 하므로 고난이도가 되겠지만..

http -> https 로 가는 과정에서 이 공격을 수행할 수 있다.

중간에서 자신이 서버인 마냥 클라에게 https 응답을 주고, 서버와도 https 통신을 하면 된다.


4.
https -> http 로 내려버리면 당연히 보안문제가  다시 생긴다.

물론 https 사용이 오버헤드를 유발하긴 하지만 

보안 측면에서만 본다면 모든 통신을 https 로 하는 것이 좋다.

물론 이 경우에도 유저가 처음부터 https 로 접속해야 ssl strip 에서 안전하다.


5.
이것은 매우 당연하지만 정부기관이 아니더라도 사이트 관리자는 뭐든 다 알 수 있다.

암호화를 하던 뭘 어쩌든 간에 서버에서 최종적으로 패킷을 풀어볼 것이므로..


6.man in the middle attack 은 패킷을 먹튀하는 것이다. 즉, 원래의 목적지로 가는걸 막거나, 변조해서 보내거나..

  리플레이어택은 man in the middle attack 이 아니더라도 가능하다. 엿보기만 하면 되니까.

  라우터를 굳이 점거하지 않더라도 리플레이어택을 수행할 수 있다. (무선통신..)

'네트워크' 카테고리의 다른 글

로그인 패킷 보호 알고리즘  (0) 2012.03.16
udp vs tcp  (0) 2012.03.16
Posted by 휘사마
,