Cordova + iOS 10: NSCameraUsageDescription missing, NSPhotoLibraryUsageDescription

얼마전까지 PhoneGap 과 Cordova 를 이용해서 iOS App을 만들고 있었는데 몇일전 기능을 수정할 일이 있어서 수정후 다시 앱스토어에 올릴려고 하니 아래와 같은 이메일을 받게 되었다.

Dear developer,

We have discovered one or more issues with your recent delivery for "Meals Delivered". To process your delivery, the following issues must be corrected:
This app attempts to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSPhotoLibraryUsageDescription key with a string value explaining to the user how the app uses this data.
This app attempts to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSCameraUsageDescription key with a string value explaining to the user how the app uses this data.

해결 방법을 찾다 찾다 찾아내어서 해결 ^^
아래의 코드를 config.xml 에 넣어주고 PhoneGap 에서 컴파일 후 업로드하면 끝!!

<plugin name="cordova-plugin-media-capture" source="npm" spec="*">
	<variable name="CAMERA_USAGE_DESCRIPTION" value="App would like to access the camera." />
	<variable name="MICROPHONE_USAGE_DESCRIPTION" value="App would like to access the microphone." />
	<variable name="PHOTOLIBRARY_USAGE_DESCRIPTION" value="App would like to access the library." />
</plugin>

NSCameraUsageDescription, NSMicrophoneUsageDescription, NSPhotoLibraryUsageDescription 이 3가지 항목이 프라이버시 관련해서 문제가 발생하는 것으로 확인되었다.

마우스휠 Normalise

브라우져별로 마우스 휠이 스크롤될때의 값이 틀리기 때문에 경우에 따라서는 값을 보정해 주어야 하는 경우가 발생한다.

아래 코드는 브라우져별로 값을 보정해 주는 스크립트.

window.onload = function(){
	var wheelDistance = function(evt){
		if (!evt) evt = event;
		var w=evt.wheelDelta, d=evt.detail;
		if (d){
			if (w) return w/d/40*d>0?1:-1; // Opera
			else return -d/3;              // Firefox;         TODO: do not /3 for OS X
		} else return w/120;             // IE/Safari/Chrome TODO: /3 for Chrome OS X
	};
}

.bashrc 프롬프트 색, 형식 변경 – CentOS

# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias ll='ls -al --block-size=M'

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

export PS1="\[\e[31;1m\][\u@\[\e[34;1m\]\H \W]# \[\e[0m\]"

Exim 로그 항목 설정 방법


웹사이트를 개발하고 서버를 관리하다 보면 서버를 통해 정말 많은 스팸이 발송 되는 경우가 많다.

서버에 ssh 등으로 접속해서 /etc/exim.conf 설정 파일을 열어보면 log_selector 라는 항목이 있는데 이 부분을 좀더 상세하게 아래와 같이 설정하면 스팸이 발송될때 추적이 좀더 용이해 진다.


log_selector = +address_rewrite +all_parents +arguments +connection_reject +delay_delivery +delivery_size +dnslist_defer +incoming_interface +incoming_port +lost_incoming_connection+queue_run +received_sender +received_recipients +retry_defer +sender_on_delivery +size_reject +skip_delivery +smtp_confirmation +smtp_connection +smtp_protocol_error +smtp_syntax_error +subject +tls_cipher +tls_peerdn

 

설정 변경후 exim 을 재시작 해주면 이후 부터 발송 되는 이메일의 로그가 좀더 상세하게 나오게 된다.

이로 인해 어떤 이메일이 해킹되서 권한을 얻어 스팸 이메일을 발송하는지 쉽게 찾아 낼 수 있다.

연관글: 해킹 – 변경된 파일 검색 방법

연관글: cPanel 이메일 에러 – has exceeded the max defers and failures per hour

해킹 – 변경된 파일 검색

Dedicated Server 와 VPS 를 여러개 운용하면서 알게된 내용을 공유합니다.

보통 해킹이 되면 해킹 코드가 들어있는 새로운 파일이 생기거나 기존 파일에 해킹 코드를 삽입하는 경우들이 있습니다.

특히나 워드프레스(WordPress)의 경우 코어를 업데이트를 해주지 않으면 해킹의 위험에 노출되기 쉽습니다.

SSH 로 서버에 접속을 하여 해킹된 계정의 Document Root 경로로 이동합니다. 이동 후 아래의 커멘드를 치면

find . -mtime -2 -ls

find 로 파일을 찾는 명령어 입니다. -2 부분은 2일 전부터 수정된 파일을 검색합니다. 4일전부터 수정된 모든 파일을 검색하고자 한다면 -2를 -4로 변경후 명령어를 수행하면 됩니다.

hacked_files_search

검색 결과는 위처럼 나오게 되며 해당 파일을 열어서 확인 작업을 하셔서 해킹 코드를 제거하면 되겠습니다.

위 방법으로 모든 해킹 코드를 제거하기는 쉽지 않지만 제 경험상으로 봤을때 이런 저런 방법으로 하다가 잘 안될때 사용하시기에 좋은 방법이라 생각됩니다.