암호 복잡도 강제 규칙의 우선순위는 어디쯤인가?

이미지
  ITGC 진행하면서 또 암호 설정 시 복잡도 규칙을 추가하라는 가이드가 나왔다.  - 영문, 숫자, 특수문자 조합하여 8자리 이상 무차별대입 공격의 대비인데, 현 시점에 웬만한 서비스는 로그인 누적실패에 따른 재시도 횟수제한이 있다. 만약 없다면, 이 장치의 마련이 최우선이다! 이런 장치가 미비하던 시절에는 아래와 유사한 표를 보여주며 '해커가 암호를 알아내는데 몇 초~ 몇 년 걸린다.' 하는 식으로 논리를 전개했었다. 조합별 경우의 수 (단위: 조) 물론 재시도 횟수제한이 없는 개인 엑셀파일이나, 탈취된 인증서 같은 경우, 무한한 부르트포스 공격이 가능하기 때문에 위와 같은 전략이 유효하다. 하지만 2022년 현 시점에 웹서비스 가입자에게 그리 중요한 포인트는 아니다. 다행히 2019년 개편된 KISA 가이드에는 이 복잡도 부분이 약간 완화되고, 다른 사회적 요인들에 대한 부분이 추가되었다. 종합적 사고 없이 보수적으로 들이대는 관습적인 잣대를 경계해야한다.

행복지수의 역설

 행복하지 못함은 나답게 살지 못하기 때문이다. 행복지수 최하위권 대한민국은 수시로 남과 비교하며 최선을 다해 남답게 산다. 하지만 역설적이게도 이것은 대한민국의 고도성장을 이끈 민족성 중 하나다.

Pandas - NaN is a float

  현상 When I concate or merge, some columns are forced to change to Float64 원인 In  Working with missing data , we saw that pandas primarily uses  NaN  to represent missing data. Because  NaN  is a float, this forces an array of integers with any missing values to become floating point. In some cases, this may not matter much. But if your integer column is, say, an identifier, casting to float can be problematic. Some integers cannot even be represented as floating point numbers. 해결 astype('Int64') 임의변경

Django Admin Log 히스토리

로깅테이블 설계 시 참고   테이블명: django_admin_log object_id: 모델의 primary_key 값 object_repr: __str__() 문자열 action_flag: 1:추가, 2:수정, 3:삭제 change_message: [{"added": {}}] 또는 [{"changed": {"fields": ["필드1", "필드2"]}}]     이런 식으로 저장되며, 화면상 "추가됨" 또는 "뭐뭐 필드가 변경됨" 이라고 나온다.     값은 남지 않는다.     삭제로그인 경우 아무 값도 없다.      엑셀일괄처리한 것은 모두 "update through import_export" 라고 남는다. content_type_id: 모델(django_content_type)의 id

float 대신 decimal 을 쓰자

부동소수점 자료형 float python 에서 소수점이 포함된 숫자는 기본적으로 float 형이다. 컴퓨터 내부 이진수로 저장하기 때문에 십진수와 다르게 대부분 아래와 같이 근사값으로 저장된다.  >>> 1.5 * 0.009 0.013499999999999998 적당히 반올림해서 쓰면 문제가 없지만, 올림 또는 내림 시 문제가 될 수 있다. 이럴땐 Decimal 을 쓰자 >>> from decimal import Decimal >>> Decimal('1.5') * Decimal('0.009') Decimal('0.0135') 참고, nomalize() 로 소수점 뒤 0을 없앨 수 있다. >>> Decimal('12.34500').normalize() Decimal('12.345')

localhost vs 127.0.0.1 vs 0.0.0.0

같지 않다.  localhost localhost는 컴퓨터 네트워크에서 사용하는 루프백 호스트명으로, 자신의 컴퓨터를 의미한다. IPv4에서의 IP 주소는 127.0.0.1이며, IPv6에서는::1로 변환된다. 로컬 컴퓨터를 원격 컴퓨터인것처럼 통신할 수 있어 테스트 목적으로 주로 사용된다. 위키백과 127.0.0.1 The most commonly used IP address on the loopback network 0.0.0.0 인터넷 프로토콜 버전 4에서 주소 0.0.0.0은 유효하지 않거나 알 수 없거나 적용 할 수없는 대상을 지정하는 데 사용되는 라우팅 할 수 없는 메타 주소입니다. 네트워크 도메인 전체를 가리킴

Flask 3분 맛보기

$ pip install flask $ vi myapp.py from flask import Flask app = Flask(__name__) @app.route('/') def index():     return 'Hello Work' if __name__ == '__main__':     app.run(host='0', port=3000) $ python3 myapp.py