티스토리 뷰

문제상황

단어가 왜 이래!!

사이트의 다운로드 파일을 프로그램으로 가져가는 것을 방지하기 위해 jCaptchar를 사용했다. 그런데 문제는 jCaptcha에서 발생되는 단어가 좀 민망한 단어들이 종종 있다는 것이다. 기능상의 문제는 아니었기에 그냥 두었는데 결국 거슬린다는 항의메일(이미지캡쳐까지..^^)이 날라와서 결국은 수정방법을 찾아보게 되었다. (고객의 불만은 나를 움직이게 한다~~.)

인터넷을 뒤져봤는데 생각보다 자료가 많지 않았다. 결국 jCaptchar 사이트에서 차근차근 찾아보기로 했다. 다행이도 해답이 들어있었다.

방법은 바로 워드발생기에서 사용하는 사전을 바꾸는 것이다. jCaptchar 는 기본적으로 영단어 600개를 포함한 사전(toddlist.properties)제공하며 여기서 사용할 단어를 가져온다. 그런데 이 사전 안에 없었으면 좋을 뻔한 단어들이 포함된 것이다. 다행스럽게도 확장성을 고려한 개발자들이 간단하게 사전 properties 설정으로만으로도 다른 사전으로 대체할 수 있도록 만들었다.

작업

  1. 새로운 사전 properties를 생성한다.
  2. 설정 XML에서 사전 properties 값을 변경한다.

1. 새로운 사전 properties 생성

/src 아래에 mywordlist.properties 를 생성하고 사용할 단어를 등록한다.

2. 사전 properties 변경

사전을 toddlist에서 mywordlist 로 변경한다.

수정 전

	<bean id="wordgen"
		class="com.octo.captcha.component.word.wordgenerator.DictionaryWordGenerator">
		<constructor-arg>
			<ref bean="filedict" />
		</constructor-arg>
	</bean>

	<bean id="filedict"
		class="com.octo.captcha.component.word.FileDictionary">
		<constructor-arg index="0">
			<value>toddlist</value>
		</constructor-arg>
	</bean>

수정 후

	<bean id="wordgen"
		class="com.octo.captcha.component.word.wordgenerator.DictionaryWordGenerator">
		<constructor-arg>
			<ref bean="filedict" />
		</constructor-arg>
	</bean>

	<bean id="filedict"
		class="com.octo.captcha.component.word.FileDictionary">
		<constructor-arg index="0">
			<value>mywordlist</value>
		</constructor-arg>
	</bean>

결과

영단어 대신 알파벳과 숫자를 랜덤으로 사용하도록 바꾸었다.

수정 전

수정 후

참고 https://www.google.com/recaptcha

댓글