0
다음 정규식을 사용하여 Kohana 응용 프로그램에 Auth를 사용하여 강력한 암호를 적용하려고합니다. 하나 이상의 대문자, 하나의 소문자, 하나의 숫자, 하나의 숫자, 영숫자 (특수 문자) 및 최소 8 자입니다. Rubular에서 볼 수 있듯이 Kohana Auth에서 강력한 암호 적용
^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[^A-Za-z0-9]).{8,}$
정규식
는 노력하고 있습니다. 다음은 Kohana의Model_Auth_User
에서 사용하는 코드이며
ORM
까지 확장됩니다. 새 사용자 계정을 만들거나 기존의 암호를 변경할 때
public function rules() {
return array(
'password' => array(
array('not_empty'),
array('min_length', array(':value', 8)),
array('regex', array(':value', '/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[^A-Za-z0-9]).{8,}$/'))
)
);
}
그러나,이 정규식은 완전히 무시 될 것으로 보인다. 위의 줄에서
min_length
은 잘 작동합니다!
test
은 암호가 8 문자 미만이므로 사용하지 못하지만, testing123
은 어떤 종류의 오류 메시지도 표시하지 않습니다.
왜 이런 일이 발생하고 그 방법이 있습니까?
암호를 해시로 저장 하시겠습니까? 기억한다면 ORM 규칙이 REQUEST 값이 아닌 데이터베이스 값에 적용됩니다. – bato3
@ bato3 예, 암호가 해시되었습니다. 암호 유효성 검사는 암호화되기 전에 POST 값에서 실행됩니다. – SigmaSteve
나는 이것을 안다. 왜 코드가 작동하지 않는지 설명하려고합니다. 추가 유효성 검사없이'save'를 사용하면 내부 값을 사용할 수 있습니다. 이것은'set' 메소드에서 해시되었습니다. 따라서 추가 유효성 검사 초기화 원시 (POST) 값을 사용해야합니다. https://kohanaframework.org/3.3/guide-api/Model_Auth_User#filters, [#set] (https://kohanaframework.org/3.3/guide-api/Model_Auth_User#save), [#create] (https ://kohanaframework.org/3.3/guide-api/Model_Auth_User#create) – bato3