>백엔드 개발 >PHP 튜토리얼 >PHP 보안 예제에 대한 자세한 설명

PHP 보안 예제에 대한 자세한 설명

小云云
小云云원래의
2018-03-06 10:27:141908검색

1. SQL 주입

웹 양식 제출에 SQL 명령을 삽입하거나 도메인 이름 또는 페이지 요청에 대한 쿼리 문자열을 입력하여 궁극적으로 서버를 속여 악성 SQL 명령을 실행합니다.

방어: 먼저 필터링한 다음 매개변수 바인딩을 수행합니다.

2.

방어: 필터 입력.

$id = (int) $_REQUEST['id'];if( $id > 0 ){}
$name = htmlentities($_REQUEST['name'], ENT_QUOTES, "UTF-8");// 注意,如果这里不进行转化也是可以的,// 只要在输出的时候进行转化(建立在已经参数绑定的情况下)。

3. CSRF

교차 사이트 요청 위조

원리: Helen이 Weibo에 로그인한 후 유해한 사이트를 탐색했고 유해한 사이트인 Weibo 블로그에 가짜 게시물이 생성되었습니다. 이번에 헬렌은 자신도 모르게 웨이보를 올렸다.

방어: Weibo 페이지에 임의의 토큰을 삽입하면 Weibo 서버가 토큰 값을 확인합니다.

4. Clickjacking

ClickJacking

원리: 아마도 두 가지 방법이 있을 것입니다. 하나는 공격자가 투명한 iframe을 사용하여 이를 웹 페이지에 덮어 사용자가 들어가도록 유도하는 것입니다. iframe에서 작업할 때 사용자는 자신도 모르게 투명한 iframe 페이지를 클릭하게 됩니다. 둘째, 공격자는 웹 페이지를 가리기 위해 그림을 사용하여 웹 페이지의 원래 위치를 차단합니다.

방어: js를 사용하여 프레임이 동일한 도메인 이름에 있는지 확인합니다. 헤더 지시문 추가: X-Frame-Options.

// js if (top.location.hostname !== self.location.hostname) {    alert("您正在访问不安全的页面,即将跳转到安全页面!");    top.location.href = self.location.href;}// Apache 配置:Header always append X-Frame-Options SAMEORIGIN// nginx 配置:add_header X-Frame-Options SAMEORIGIN;

5. 파일 업로드

원칙: 다양한 유형의 불법 소프트웨어가 업로드될 수 있습니다.

방어: 감지 유형, 감지 크기. zip 재압축. 압축을 풀면 서버가 혼잡해질 가능성이 높기 때문입니다.

7. 세션 하이재킹

원리: 클라이언트와 서버가 통신할 때 해커는 패킷을 캡처하여 세션 ID를 획득하고 최종적으로 서버와 통신합니다.

방어: 때때로 HttpOnly를 설정하고 sessionid를 재설정하세요.

8. 비밀번호 저장

$hashedPassword = password_hash('password', PASSWORD_DEFAULT);password_verify('the wrong password', $hashedPassword); // falsepassword_verify('my super cool password', $hashedPassword); // true
9. 무차별 대입 크래킹
/**防御:1. 限制次数2. 验证码3. 防火墙分析 类似 fail2ban*/

서버 보안

1. mysql 루트 수정 이름

vi /etc/ssh/sshd_configfirewall-cmd --list-allfirewall-cmd --add-port=8888/tcp --permanentfirewall-cmd --reload# 如果是阿里云服务器,不要忘记修改阿里云安全组

3. 루트 원격 로그인 비활성화

# 修改 mysql 数据库中的 user 表,然后 flush privileges

                                                                                   > 웹 양식에 SQL 명령을 입력하거나 요청한 도메인 이름이나 페이지를 입력합니다. 쿼리 문자열, 궁극적으로 서버는 악성 SQL 명령을 실행하도록 속입니다.

방어: 먼저 필터링한 다음 매개변수 바인딩을 수행합니다.

2.

방어: 필터 입력.

vi /etc/ssh/sshd_configPermitRootLogin
$id = (int) $_REQUEST['id'];if( $id > 0 ){}

3. CSRF

교차 사이트 요청 위조

원리: Helen은 Weibo에 로그인하여 유해 사이트를 탐색했으며 유해 사이트 Weibo 블로그에 가짜 게시물이 생성되었습니다. 헬렌은 자신도 모르게 웨이보를 올렸습니다.

방어: Weibo 페이지에 임의의 토큰을 삽입하면 Weibo 서버가 토큰 값을 확인합니다.

4. 클릭재킹

ClickJacking

原理:大概有两种方式,一是攻击者使用一个透明的 iframe ,覆盖在一个网页上,然后诱使用户在该页面上进行操作,此时用户将在不知情的情况下点击透明的 iframe 页面;二是攻击者使用一张图片覆盖在网页,遮挡网页原有位置。

防御:使用 js 判断框架是否在同一个域名下。添加头部指令: X-Frame-Options。

// js if (top.location.hostname !== self.location.hostname) {    alert("您正在访问不安全的页面,即将跳转到安全页面!");    top.location.href = self.location.href;}// Apache 配置:Header always append X-Frame-Options SAMEORIGIN// nginx 配置:add_header X-Frame-Options SAMEORIGIN;

5. 上传文件

原理:可能会被上传各种类型的非法软件。

防御:检测类型,检测大小。

6. zip *

原理:有些 zip 文件看起来很小,解压后非常大

防御:不要做这样的操作:对用户上传的压缩文件解压,处理,再压缩。因为你解压的时候,很可能你的服务器就被挤爆了。

7. session 劫持

原理:客户端和服务端通信时候,黑客抓包,获取 sessionid ,最终黑客与服务器通信。

防御:
 设置 HttpOnly,时常重设 sessionid。

8. 密码存储

$hashedPassword = password_hash('password', PASSWORD_DEFAULT);password_verify('the wrong password', $hashedPassword); // falsepassword_verify('my super cool password', $hashedPassword); // true

9. 暴力破解

/**防御:1. 限制次数2. 验证码3. 防火墙分析 类似 fail2ban*/

服务器安全

1. 修改 22 端口

vi /etc/ssh/sshd_configfirewall-cmd --list-allfirewall-cmd --add-port=8888/tcp --permanentfirewall-cmd --reload# 如果是阿里云服务器,不要忘记修改阿里云安全组

2. 修改 mysql root 名称

# 修改 mysql 数据库中的 user 表,然后 flush privileges

3. 禁止 root 远程登陆

vi /etc/ssh/sshd_configPermitRootLogin

相关推荐:

PHP安全地上传图片

PHP安全开发库详解

php安全配置记录和常见错误的详细总结介绍

위 내용은 PHP 보안 예제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.