미디어위키/미디어위키 익스텐션

미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) ConfirmEdit 설치와 활용

씨실과 날실 2020. 5. 4. 14:00

[익스텐션 목록]

기본 익스텐션

2019/10/29 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) Interwiki 설치와 활용

2020/04/28 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) Nuke 설치와 활용

2020/04/28 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) Renameuser 설치와 활용

2020/04/29 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) CiteThisPage 설치와 활용

2020/04/29 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) Replace Text 설치와 활용

2020/04/29 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) WikiEditor 설치와 활용

2020/04/30 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) CodeEditor 설치와 활용

2020/04/30 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) CategoryTree 설치와 활용

2020/05/01 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) Cite 설치와 활용

2020/05/01 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) ImageMap 설치와 활용

2020/05/02 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) InputBox 설치와 활용

2020/05/02 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) ParserFunctions 설치와 활용

2020/05/03 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) Poem 설치와 활용

2020/05/03 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) SyntaxHighlight 설치와 활용

2020/05/04 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) PDF Handler 설치와 활용

2020/05/04 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) ConfirmEdit 설치와 활용

2020/05/05 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) SpamBlacklist 설치와 활용

2020/05/05 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) TitleBlacklist 설치와 활용

2020/05/06 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) Gadgets 설치와 활용

2020/05/06 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) LocalisationUpdate 설치와 활용

2020/05/07 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) MultimediaViewer 설치와 활용

2020/05/07 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) OATHAuth 설치와 활용




[ConfirmEdit 익스텐션 관련 정보]

익스텐션 공식 안내 페이지

https://www.mediawiki.org/wiki/Extension:ConfirmEdit

다운로드

미디어위키 내 배포 페이지

https://www.mediawiki.org/wiki/Special:ExtensionDistributor/ConfirmEdit

github 페이지

https://github.com/wikimedia/mediawiki-extensions-ConfirmEdit


ConfirmEdit 익스텐션 기능

편집 문서 저장과 기타 사용자 작업 시 보안을 위한 CAPTCHA 기능을 제공하는 페이지 액션 형식의 익스텐션입니다.

ConfirmEdit 익스텐션에는 보안 문자 생성을 위한 몇 가지 모듈이 제공됩니다.

SimpleCaptcha

사용자는 간단한 수학 문제를 해결해야합니다.

FancyCaptcha

사용자는 양식에 따라 일련의 문자를 식별해야합니다.

MathCaptcha

사용자는 이미지로 표시되는 수학 문제를 해결해야합니다.

QuestyCaptcha

사용자는 관리자가 정의한 일련의 질문에 대답해야합니다.

ReCaptcha NoCaptcha

사용자에게는 JavaScript 기반의 인류 검사가 제공됩니다. 확인에 실패하면 퍼즐이 표시됩니다. 


MathCaptcha는 TeX와 Math 익스텐션이 필요합니다.

FancyCaptcha를 사용하려면 Python에서 예비 설정 스크립트를 실행해야합니다.




익스텐션 다운로드 및 설치

다운로드 안내

익스텐션 다운로드 및 설치 방법은 아래 링크를 참고하시기 바랍니다.


사용 중인 미디어위키의 버전에 맞는 배포 익스텐션 압축 파일을 다운로드받습니다.

익스텐션 공식 배포처

미디어위키 내 배포 페이지

https://www.mediawiki.org/wiki/Special:ExtensionDistributor/ConfirmEdit

github 페이지

https://github.com/wikimedia/mediawiki-extensions-ConfirmEdit




미디어위키 버전별 익스텐션 다운로드 주소

1.34

https://extdist.wmflabs.org/dist/extensions/ConfirmEdit-REL1_34-45ca059.tar.gz

1.33

https://extdist.wmflabs.org/dist/extensions/ConfirmEdit-REL1_33-0e549d7.tar.gz

1.32

https://extdist.wmflabs.org/dist/extensions/ConfirmEdit-REL1_32-1986125.tar.gz

1.31

https://extdist.wmflabs.org/dist/extensions/ConfirmEdit-REL1_32-1986125.tar.gz

위 주소는 코드 수정으로 바뀔 수 있으므로 다운이 받아지지 않는다면 위 공식 루트를 통해 다운받으시기 바라비니다.

다운로드 받은 압축 파일을 서버 안 미디어위키 설치 폴더 내에 있는  extensions폴더 안에 풀어줍니다.

리눅스 서버의 경우

$ sudo tar -xzf ConfirmEdit-REL1_34-45ca059.tar.gz -C /미디어위키 설치 경로/extensions


예시 - Ubuntu

$ sudo tar -xzf ConfirmEdit-REL1_34-45ca059.tar.gz -C /var/www/html/w/extensions

위 명령은 제 블로그를 그대로 따라오신 분의 경우 적용되는 예시입니다.


윈도 서버의 경우

탐색기로 압축 파일을 해당 위치에 풀어주시면 됩니다.


호스팅을 받는 경우

파일질라, 알FTP 등 FTP 프로그램을 이용해 미리 풀어 놓은 익스텐션 폴더(ConfirmEdit)를 통째로 해당 위치에 전송해줍니다.




ConfirmEdit 익스텐션 필수 설정

미디어위키의 환경 설정 파일인 LocalSettings.php 파일에 다음과 같은 코드를 추가해줍니다.

wfLoadExtension( 'ConfirmEdit' );


... 전략 ...

# Enabled extensions. Most of the extensions are enabled by adding
# wfLoadExtensions('ExtensionName');
# to LocalSettings.php. Check specific extension documentation for more details.
# The following extensions were automatically enabled:
wfLoadExtension( 'CategoryTree' );
wfLoadExtension( 'Cite' );
wfLoadExtension( 'CiteThisPage' );
wfLoadExtension( 'CodeEditor' );
wfLoadExtension( 'ConfirmEdit' );
wfLoadExtension( 'Gadgets' );
wfLoadExtension( 'ImageMap' );
wfLoadExtension( 'InputBox' );
wfLoadExtension( 'Interwiki' );
wfLoadExtension( 'LocalisationUpdate' );
wfLoadExtension( 'MultimediaViewer' );
wfLoadExtension( 'Nuke' );
wfLoadExtension( 'OATHAuth' );
wfLoadExtension( 'ParserFunctions' );
wfLoadExtension( 'PdfHandler' );
wfLoadExtension( 'Poem' );
wfLoadExtension( 'Renameuser' );
wfLoadExtension( 'ReplaceText' );
wfLoadExtension( 'SpamBlacklist' );
wfLoadExtension( 'SyntaxHighlight_GeSHi' );
wfLoadExtension( 'TitleBlacklist' );
wfLoadExtension( 'WikiEditor' );

# End of automatically generated settings.
# Add more configuration options below.

... 후략 ...

미디어위키 설치시 기본 제공 익스텐션을 함께 설치하도록 설정한다면 코드는 보통 위 예시와 같은 위치에 추가됩니다.


설치 확인

미디어위키의 특수:버전(= Special:Version) 문서를 확인하면 위 익스텐션이 추가된 것을 확인할 수 있습니다.




익스텐션 사용법

ConfirmEdit 익스텐션 공통 구성 설정

ConfirmEdit.php의 기본값 :

$wgGroupPermissions['*'            ]['skipcaptcha'] = false;
$wgGroupPermissions['user'         ]['skipcaptcha'] = false;
$wgGroupPermissions['autoconfirmed']['skipcaptcha'] = false;
$wgGroupPermissions['bot'          ]['skipcaptcha'] = true; // 등록된 봇
$wgGroupPermissions['sysop'        ]['skipcaptcha'] = true;


이메일을 확인한 사용자의 보안 문자를 건너 뛰려면 다음을 모두 설정해야합니다.

$wgGroupPermissions['emailconfirmed']['skipcaptcha'] = true;
$ceAllowConfirmedEmail = true;


보안 문자를 표시하는 5가지 "트리거"가 있습니다.

'edit' - 편집한 문서 저장할 때마다

'create' - 문서를 만들 때마다

'addurl' - 하나 이상의 URL을 추가하는 문서를 저장할 때마다

'createaccount' - 새 상요자 계정을 생성할 때마다

'badlogin' - 로그인에 실패한 다음 로그인을 제시도할 때.

LocalSettings.php에서 $wgMainCacheType을 CACHE_NONE 이외의 것으로 설정해야합니다.

의심스러운 경우 다음이 항상 작동합니다.

badlogin은 API 로그인 시 보안 문자를 트리거하지 않지만 $wgCaptchaBadLoginExpiration이 만료 될 때까지 보안 문자를 완전히 차단합니다.


$wgMainCacheType = CACHE_ANYTHING;


트리거 기본값은 다음과 같습니다.

$wgCaptchaTriggers['edit'] = false;
$wgCaptchaTriggers['create'] = false;
$wgCaptchaTriggers['addurl'] = true;
$wgCaptchaTriggers['createaccount'] = true;
$wgCaptchaTriggers['badlogin'] = true;


$ wgCaptchaTriggersOnNamespace 설정을 사용하여 이름공간(네임 스페이스)별로 트리거 edit, create 및 addurl 트리거를 설정할 수 있습니다.

현재 $wgCaptchaTriggersOnNamespace가 없으면 일반 $wgCaptchaTriggers가 적용됩니다. 위의 $wgCaptchaTriggers 기본값 외에도 이름공간과 관련하여 다음과 같은 기본값을 가집니다.

$wgCaptchaTriggersOnNamespace[NS_TALK]['addurl'] = false;
$wgCaptchaTriggersOnNamespace[NS_PROJECT]['edit'] = true;


기타 고급 사용


보안문자 유형

SimpleCaptcha (계산)

미디어위키의 기본 보안 문자입니다. 사용자 계정 관리 시 확인할 수 있습니다. 이 모듈은 사용자에게 간단한 덧셈 또는 뺄셈 질문을 제공합니다.

이 보안 문자를 사용하려면 LocalSettings.php에 다음 줄을 추가해줍니다.

$wgCaptchaClass = 'SimpleCaptcha';

이 보안 모듈은 사용을 권장하지 않습니다. 가능하면 다른 보안 모듈로 바꾸시는 것을 강력히 권장합니다.


QuestyCaptcha

이 모듈은 질문에 대한 답변을 요구하는 보안 기능을 제공합니다.

구성에서 질문을 설정할 수 있습니다. Q & A를 편집하여이 CAPTCHA를 활성화하려면 LocalSettings.php에 다음과 같은 형식으로 설정해주시면

//  미디어위키 ㅠ버전이 1.25 이상인 경우 이 줄을 사용합니다.
wfLoadExtensions([ 'ConfirmEdit', 'ConfirmEdit/QuestyCaptcha' ]);

// 그렇지 않으면 다음 줄을 사용합니다.
require_once "$IP/extensions/ConfirmEdit/ConfirmEdit.php";
require_once "$IP/extensions/ConfirmEdit/QuestyCaptcha.php";

// 아래 형식에 맞춰 LocalSettings.php에 질문과 답을 적어줍니다.:
$wgCaptchaQuestions = [
    '1만원권 초상화의 주인공은?' => '세종대왕',
    '대한민국의 영어 약자는?' => 'ROK', // 답변은 대소문자를 구분하지 않습니다.
    '이 위키 사이트의 이름은 무엇입니까?' => $wgSitename, // 변수를 사용 가능합니다.
    '대한민국의 수도는 무엇입니까??' => [ '서울', '서울시', '서울특별시' ], // 한 질문에 여러 개의 답이 있을 수 있습니다.
];


ConfirmEdit의 작동 시기 및 기타 옵션을 구성할 수도 있습니다. 보안 문자가 나타나지 않으면 확장 코드 아래에 다음을 추가하십시오.

개별 옵션을 "true"로 설정하면 명명된 작업을 수행할 때 보안 문자가 작동합니다.

$wgMainCacheType    = CACHE_ANYTHING;
$wgCaptchaTriggers['edit']          = true;
$wgCaptchaTriggers['create']        = true;
$wgCaptchaTriggers['createtalk']    = true;
$wgCaptchaTriggers['addurl']        = true;
$wgCaptchaTriggers['createaccount'] = true;
$wgCaptchaTriggers['badlogin']      = true;



ReCaptcha (NoCaptcha)

NoCaptcha는 ReCaptcha의 후속 모델로로 2014년 12월 Google에 재도입된 보안 기능입니다.

reCaptcha는 사용자측 JavaScript를 기반으로 페이지에서 탐색 동작을 분석하여 사이트 이용자를 사람으로 식별합니다. 사용자는 "로봇이 아닙니다" 확인란을 클릭해야 하며 사람임을 증명하기 위해 더 이상 할 필요가 없습니다. 그러나 경우에 따라 사용자는 여전히 보안 문자 이미지 문제를 해결해야 할 수도 있습니다.

참고 : ReCaptcha는 VisualEditor에서 작동하지 않습니다.

이 모듈은 ConfirmEdit에서 새로운 ReCaptcha NoCaptcha 솔루션을 구현합니다. 여전히 공개 키와 비밀 키 (ReCaptcha 관리자 패널에서 v2로 변경해야 합니다. v3은 작동하지 않습니다.)가 필요하고 다음을 사용하여 플러그인을 활성화해야 합니다.

wfLoadExtensions([ 'ConfirmEdit', 'ConfirmEdit/ReCaptchaNoCaptcha' ]);
$wgCaptchaClass = 'ReCaptchaNoCaptcha';
$wgReCaptchaSiteKey = '사이트 공개키';
$wgReCaptchaSecretKey = '비밀키';


이 기능을 사용하기 위해서는 아래 링크에서 공개키와 비밀키를 발급받아야 합니다.


추가 구성 옵션

$wgReCaptchaSendRemoteIP

// (기본값 : false)

이 설정은 사용자의 개인 정보 보호를 위해 기본값인 "false"로 유지하는 것을 권장합니다. 

true로 설정하면 CAPTCHA를 확인하는 동안 현재 사용자의 IP 주소를 Google에서 서버로 보냅니다.


FancyCaptcha

이 모듈은 문자열 모음의 이미지를 표시합니다. 이미지의 집합을 만들기 위해선 파이썬 이미징 라이브러리를 설치해야하지만, 대부분의 환경에서 이미 설치되어 있으므로 따로 설치 작업을 할 필요는 없습니다.


1. 만약 설치해야 한다면 다음 명령을 실행해줍니다.

# pip install pil

LocalSettings.php에 다음 줄을 추가해줍니다.

// 미디어위키 1.25 이상인 경우:
wfLoadExtensions([ 'ConfirmEdit', 'ConfirmEdit/FancyCaptcha' ]);
$wgCaptchaClass = 'FancyCaptcha';

// 미디어위키 1.25 미만인 경우:
require_once "$IP/extensions/ConfirmEdit/ConfirmEdit.php";
require_once "$IP/extensions/ConfirmEdit/FancyCaptcha.php";
$wgCaptchaClass = 'FancyCaptcha';


2. LocalSettings.php에서 Captcha 이미지를 저장할 디렉터리를 $wgCaptchaDirectory를 이용해 설정합니다. 아래에 $wgCaptchaSecret를 사용해 암호로 설정합니다.

$wgCaptchaDirectory

$wgCaptchaSecret


3. 다음을 실행하여 이미지를 작성합니다.

python /path/to/captcha.py --font=<font> --wordlist=<wordlist> --key=<key> --output=<output> --count=<count>

font는 일부 글꼴 (예 : AriBlk.TTF)의 경로입니다.

wordlist는 일부 단어 목록의 경로입니다 (예 : /usr/share/dict/words).

참고

데비안/우분투에서는 'wbritish'및 'wamerican'패키지가 그러한 목록을 제공합니다. Fedora에서는 'words'패키지를 사용하시기 바랍니다.).

key는 $wgCaptchaSecret에서 설정한 암호입니다. 필요한 경우 따옴표를 사용하십시오.

output은 이미지를 저장할 경로입니다 ($wgCaptchaDirectory에서 정의됩니다.).

count는 생성할 이미지 수입니다.


예는 다음과 같습니다.

python captcha.py --font=/usr/share/fonts/truetype/freefont/FreeSans.ttf --wordlist=/usr/share/dict/words --key=FOO --output=../../../captcha --count=100

생성한 단어의 결과가 만족스럽지 않으면 이미지를 제거하고 새 세트를 만들면됩니다.


4. 설치한 captcha 디렉터리에 이미지를 넣으십시오.


5. 위키의 LocalSettings.php 편집 :

$wgCaptchaDirectory에서 captcha 디렉토리의 전체 경로와 $wgCaptchaSecret에서 캡처를 생성하는 동안 사용한 비밀키를 설정합니다.

$wgCaptchaDirectory = "/.php-data/my-wiki.org/wiki/captcha" ;
$wgCaptchaDirectoryLevels = 0 ;  // 이미지를 하위 디렉토리로 나누려면 이 값을 0보다 큰 값으로 설정하십시오.
$wgCaptchaSecret = "FOO" ;  // captcha.py의 --key 옵션에서 사용한 것과 동일한 값

Wikimedia Foundation의 작동 방식에 대해서는 아래 링크를 참조하십시오.


MathCaptcha

전제조건

이 보안 모듈을 사용하기 위해서는 Math 익스텐션이 필요합니다.


이 모듈은 TeX를 사용하여 기본 사칙연산 질문을 하는 이미지를 생성합니다. 이 보안 문자를 사용하려면 다음을 설정해줍니다.

// 미디어위키 1.25 이상인 경우:
wfLoadExtension( 'ConfirmEdit/MathCaptcha' );
// 미디어위키 1.25 미만인 경우:
require_once "$IP/extensions/ConfirmEdit/MathCaptcha.php";
$wgCaptchaClass = 'MathCaptcha';

이 보안 문자를 설치하려면 math 폴더의 readme 파일을 참조하시기 바랍니다.