html 확장자가 있는 페이지에서 PHP를 사용합니다. 레이아웃의 양식 HTML 페이지 PHP를 읽는 방법
로그인 양식을 만들려고 합니다. 이것은 내 HTML 양식 코드입니다.
개인적으로 저는 PDO용으로 구입했습니다.
포인트 4와 5
$password = mysql_real_escape_string(stripslashes(md5($_POST["password"])));
첫째, 순서가 잘못되었습니다. $_POST["password"]를 해시하고 그 다음에스트립슬래시를 사용하려고 합니다 - ~ 후에해시에는 슬래시가 없습니다. 그러나 사람들이 비밀번호에 슬래시(또는 기타 다른 문자)를 사용하는 것을 방지하려는 경우 문자열을 해싱하기 전에 슬래시를 제거해야 합니다.
다음 md5는 비밀번호 해싱 알고리즘으로 사용되어서는 안 됩니다. 이 알고리즘은 취약하고 무차별 대입 공격을 통해 필요한 것보다 훨씬 더 자주 문자열 충돌을 일으킬 수 있습니다.
그래요 당신 ~ 해야 하다비밀번호 자체가 아닌 비밀번호의 해시 또는 "지문"을 저장하십시오. 그러나 이상적으로는 해당 비밀번호를 md5() 함수에 던지는 대신 해당 비밀번호를 솔트 및 해시(최소 sha1 사용)하는 것이 좋습니다.
그리고 선택한 검색 엔진을 사용하여 "비밀번호 해시 설정"을 검색하세요.
포인트 6
$table WHERE 사용자 이름 = "" 에서 ID를 선택하세요. $사용자 이름. "" 및 비밀번호 = "" . $password. "";
원래 질문에서 누락된 =를 추가했지만 그게 전부입니다. 요청한 사용자 이름과 비밀번호가 일치하지 않습니다...누군가가 귀하의 사용자 이름에 SQL 주입을 시도한 경우 비밀번호는 확인되지 않습니다. 소개하다:
사용자 WHERE user.username = "fred" OR 1 = 1 -- AND user.password = "abc123"에서 user.id 선택
데이터베이스 수준의 비밀번호 확인을 신뢰하는 것보다 데이터베이스에서 지문 사용자 ID와 비밀번호를 선택한 다음 애플리케이션에서 비밀번호를 평가하는 것이 좋습니다. 이는 또한 앱 자체 내에서 특수 해싱 및 솔팅 알고리즘을 사용하여 비밀번호를 확인할 수 있음을 의미합니다.
포인트 7
$_SESSION["사용자"] = $_POST["사용자 이름"];
세션에 사용자 이름을 저장하는 것입니까? 이는 어떤 방식으로든 "로그인 검증 도구"로 사용되어서는 안 됩니다. 특히 세션에 하이재킹을 방지할 만한 것이 (분명히) 아무것도 없는 경우에는 더욱 그렇습니다.
세션 ID는 실시간으로 쿠키에서 쉽게 스니핑될 수 있으며, 이것이 다른 사람의 사용자 이름을 "빌려오는" 데 필요한 전부입니다. 적어도 사용자의 IP 주소, UserAgent 문자열 또는 각 페이지와 비교할 수 있는 상대적으로 정적인 데이터의 다른 조합을 연결하여 세션 하이재킹 가능성을 줄이도록 노력해야 합니다. 그러나 거의 모든 접근 방식에는 단점이 있습니다(특히 , 이미 발견한 바와 같이 AOL을 사용하는 방문자가 있는 경우) 그러나 99% 효과적인 지문 세션을 만들어 사용자 세션이 실수로 재설정될 가능성을 매우 낮추고 하이재킹을 줄일 수 있습니다.
이상적으로는 세션 토큰을 생성하여 완화할 수도 있습니다. CSRF 공격사용자가 데이터베이스에 대해 "권한 있는" 작업(데이터 또는 기타 업데이트)을 수행해야 하는 경우. 토큰은 데이터베이스 및/또는 데이터베이스에 저장된 완전히 무작위이고 고유한 코드일 수 있습니다. 쿠키사용자가 로그인할 때 SSL(사용자가 HTTPS 외부에서 데이터베이스를 업데이트하는 작업을 수행할 수 없는 경우). 이는 단순히 인터넷을 통해 일반 텍스트로 데이터를 전송하기 때문입니다. 나쁜 생각).
토큰은 모든/모든 양식에 대해 숨겨진 양식 필드에 배치되며 해당 양식이 제출될 때 쿠키(또는 세션 또는 데이터베이스)에 저장된 값과 비교하여 확인됩니다. 이렇게 하면 양식을 제출하는 사람이 최소한 귀하의 웹사이트에서 실시간 세션을 갖게 됩니다.
여러 가지 문제가 있을 수 있습니다.
첫째로,$match 문에 비밀번호 동일 연산자가 누락되었습니다.
$match = "$table WHERE에서 ID 선택 사용자 이름 = "".$username."" 및 비밀번호"".$password."";";
해야한다:
$match = "$table WHERE에서 ID 선택 사용자 이름 = "".$username."" 및 비밀번호 = "".$password."";";
둘째, 데이터베이스에 비밀번호를 삽입합니다. ~ 후에 md5를 사용하여 사용합니까?
그렇지 않은 경우 귀하의 요청은 md5(비밀번호)를 비밀번호와 일치시키려고 시도하는 것입니다.
개인 웹사이트를 만들 때에도 모든 사람이 모든 것을 제공할 수는 없습니다. 가능한 방법추가 사용. 향후 개발을 위한 기반을 마련하는 것은 매우 중요합니다. 과거에 웹사이트를 만들고 기본적으로 모든 페이지에 .html 확장자를 할당한 후 PHP를 사용하기로 결정했다면 계속 읽어보세요.
이전에는 SSI를 사용하려면 사이트 페이지 이름이 .shtml 확장자로 끝나야 했지만 오늘날 대부분의 인터넷 서버는 .html 확장자를 가진 페이지에서도 SSI를 사용할 수 있도록 구성되어 있어 매우 편리합니다. PHP는 완전히 다른 이야기입니다. .php 확장자가 기본 확장자입니다. 무엇이 사용될지 미리 알고 있는 웹사이트 개발자 주어진 언어프로그래밍하면 라인석에 올바른 확장자가 할당됩니다.
하지만 모든 페이지가 .html 확장자로 끝나면 어떻게 해야 할까요?
HTML 확장을 PHP로 대체
이는 여러 가지 방법으로 수행할 수 있습니다. 가장 확실한 방법은 모든 페이지에 .php 확장자를 부여하거나 기존 확장자(.html, .shtml 등)를 변경하는 것입니다. 이 방법에는 단점이 있습니다. 예를 들어, 이미 색인이 생성된 .html 확장자를 가진 페이지는 다시 색인을 생성해야 합니다. 검색 엔진. 아니면 더 나쁜 것 - 모든 것 외부 링크, 특정 페이지로 명시적으로 링크되는 링크는 유효하지 않습니다. 그리고 각 사이트의 소유자에게 이러한 변경 사항을 알리고 각 페이지에 대해 301 오류가 있는 다른 페이지를 만들어야 합니다. 물론 하나의 확장을 다른 확장으로 변경하는 것은 허용되지만 사이트에 이미 많은 페이지가 있고 다른 사이트의 다른 페이지에 대한 링크가 많이 있는 경우 어떻게 해야 합니까?
의식적인 이유로 이 순간이 사이트의 모든 페이지는 html 확장자로 끝나며 위의 변경을 원하지 않아서 불필요한 어려움을 겪었습니다.
다른 방법으로 할 수 있습니다. 사이트를 호스팅하는 서버가 mod_rewrite를 지원하고(대부분의 경우 지원함) .htaccess 파일에 액세스할 수 있는 경우 바로 이 파일에 다음 줄을 추가할 수 있습니다.
RewriteRule ^(.*)\.html $1\.php의 RewriteEngine
이 코드를 .htaccess 에 추가하면 걱정할 필요가 없습니다. .html 확장자를 가진 요청된 존재하지 않는 모든 페이지는 Apache의 경이로움 덕분에 자동으로 .php 확장자로 대체됩니다. 하지만 이 방법이 유일한 방법은 아닙니다. 동일한 .htaccess 파일에 다음을 작성할 수 있습니다.
AddHandler 애플리케이션/x-httpd-php .php .html .htm
내 생각에는 가장 성공적인 방법이다. 이는 HTML 페이지를 PHP 페이지와 동일하게 만들어, 이제 모든 PHP 기능을 HTML 확장이 포함된 페이지에서 사용할 수 있음을 의미합니다. .htaccess 파일에 액세스할 수 없는 경우 호스팅 회사에 편지를 쓰고 관리자에게 정중하게 등록을 요청할 수 있습니다. 아파치 구성(httpd.conf) 사이트에 필요한 값입니다.
그런데 이전에 사이트에서 다음과 같이 SSI를 사용했다면:
그런 다음 새 PHP 상태에서 이 코드를 다음으로 바꿔야 합니다.
include("file.txt"); ?>
그게 다예요. 위의 방법 중 하나가 도움이 될 것 같아요.
PHP는 임베디드 서버측 프로그래밍 언어입니다. 구문의 대부분은 C, Java 및 Perl에서 차용되었습니다. 또한 다음과 같은 몇 가지 고유한 특성을 추가했습니다. PHP 함수. 이 언어의 주요 목적은 동적으로 생성된 PHP HTML 페이지를 만드는 것입니다.
PHP에서 HTML로
복잡한 웹 페이지를 만들 때 특정 작업을 수행하려면 PHP와 HTML을 결합해야 하는 필요성에 직면하게 됩니다. 언뜻 보기에는 PHP와 HTML이 서로 독립적인 분야이기 때문에 복잡해 보일 수 있지만 그렇지 않습니다. PHP는 HTML과 상호 작용하도록 설계되었으며 해당 코드는 페이지 마크업에 포함될 수 있습니다.
PHP 코드는 특수 태그를 사용하여 HTML 페이지에 포함됩니다. 사용자가 페이지를 열면 서버는 PHP 코드를 처리한 다음 처리 결과를 보냅니다. PHP 코드) 브라우저에.
HTML과 PHP는 결합하기가 매우 쉽습니다. 태그 외부의 PHP 스크립트 부분PHP 컴파일러는 이를 무시하고 브라우저에 직접 전달합니다. 아래 예를 보면 완전한 PHP 스크립트가 다음과 같은 모습을 볼 수 있습니다.
안녕하세요 오늘.