0


php知识点-安全

1、简述常见的 PHP 安全性攻击?

SQL注入、代码注入、XSS攻击、会话固定、会议捕获和劫持、跨站点请求伪造(CSRF)

2、阐述PHP中防SQL注入方法?

(1)采用参数化查询或预处理语句来防止SQL注入

(2)对输入进行过滤和验证

(3)对错误信息进行适当的处理

(4)持续的安全审计和漏洞扫描

3、怎样避免XSS跨站脚本攻击漏洞?

(1)对输出进行HTML实体编码以防止XSS

$output = htmlspecialchars($input, ENT_QUOTES, 'UTF-8');

(2)设置合适的HTTP头来防止点击劫持

header("X-Frame-Options: SAMEORIGIN");

header("Content-Security-Policy: default-src 'self'");

(3)使用异步请求来提交敏感数据,如登录信息

(4)使用会话管理和CSRF令牌来防止会话劫持和跨站请求伪造

4、简述 CSRF 攻击 ?

跨站请求伪造攻击,攻击者诱导用户进入一个第三方网站,然后该网站向被攻击网站发送跨站请求。如果用户在被攻击网站中保存了登录状态,那么攻击者就可以利用这个登录状态,绕过后台的用户验证,冒充用户向服务器执行一些操作

类型:

(1)GET 类型的 CSRF 攻击

(2)POST 类型的 CSRF 攻击

(3)链接类型的 CSRF 攻击,比如在 a 标签的href 属性里构建一个请求,然后诱导用户去点击。

防护:

(1)同源检测,服务器根据 http 请求头中origin 或者referer信息来判断请求是否为允许访问的站点

(2)CSRF Token 进行验证

(3)对 Cookie 进行双重验证

5、简述PHP安全模式 ?

以安全模式运行php,当安全模式打开的时候,以下函数列表的功能将会受到限制

chdir, move_uploaded_file, chgrp, parse_ini_file, chown, rmdir, copy, rename, fopen, require, highlight_file, show_source, include, symlink, link, touch, mkdir, unlink

以下执行命令的函数列表将会受到影响

exec,shell_exec,passthru,system,popen

6、简述如何进行Session劫持的防御 ?

(1)更改Session名称

(2)关闭透明化Session ID

(3)Cookie的HttpOnly为true

(4)关闭所有phpinfo类dump request信息的页面

(5)验证HTTP头部信息

7、简述PHP如何实现过滤用户输入 ?

(1)使用预定义的过滤函数

$input = filter_input(INPUT_GET, 'input', FILTER_SANITIZE_STRING);

  1. 使用filter_var函数

$input = filter_var($_GET['input'], FILTER_SANITIZE_STRING);

  1. 使用filter_input_array过滤整个数组

(4)自定义过滤函数

8、简述PHP如何对输出要进行转义 ?

使用转义符号 ''

函数 htmlentities()

9、PHP如何实现表单与数据安全?

(1)强制类型校验

(2)过滤和转义

(3)数据验证

(4)防止重复提交

(5)使用安全的数据库操作

(6)定期更新框架和库

10、如何规避从URL的语义进行攻击 ?

对用户的输入做检测

11、解释如何PHP文件上传漏洞原理以及防御姿势?

(1)文件类型验证不完善:PHP中的$_FILES数组是用于处理文件上传的全局变量。在文件上传过程中,$_FILES变量中包含了文件的大小、类型等信息。然而,黑客可以通过伪造上传请求,将恶意文件伪装成图片或其他允许上传的文件类型。

(2)文件执行权限不当:PHP服务器在保存上传文件时,如果没有正确设置或检查文件的执行权限,黑客可能通过上传恶意文件来执行任意代码。

防御:
设置白名单

文件命名策略:在保存上传文件时,应该采用随机生成的文件名

限制文件大小

检查文件内容

文件权限控制

12、PHP如何防止防止源代码的暴露 ?

(1)使用mod_security过滤输出严防泄漏

(2)不要将关键敏感代码放到根目录中

(3)更改默认的文件类型

(4)绝对禁止访问根目录

13、PHP如何预防文件包含的代码注入攻击 ?

(1)过滤用户输入

(2)使用PDO和预编译语句

(3)禁用危险函数

(4)运行时报错处理,隐藏报错 display_errors 为 off

(5)安装防火墙

  1. PHP编程如何预防文件目录猜测漏洞?

设置文件路径限制

过滤输入数据

禁用远程文件包含

使用文件类型白名单

使用哈希检查代码完整性

事先定义文件,指定PHP常量或定义文件路径

  1. PHP安全编程之打开远程文件的风险的解决方案 ?

权限控制

日志追踪

白名单验证

禁用远程文件包含

避免使用动态文件路径

限制包含文件的目录

使用场景特定的包含函数

16、PHP如何防止Shell命令注入 ?

使用PHP内置的escapeshellcmd和escapeshellarg函数,或者手动构建白名单策略

17、PHP如何处理密码嗅探和重播攻击 ?

使用SSL发送身份验证信息

使用强度高的加密算法

对密码进行加盐处理

控制破解尝试次数

定期更换密钥

18、PHP记住登录状态的正确做法 ?

将用户信息保存在用户浏览器中作为 cookie

19、PHP编程主机文件目录浏览安全措施 ?

(1)使用.htaccess文件来禁止浏览目录

Apache里设置:Options -Indexes

  1. 更改文件和目录的权限

(3)使用.htaccess或httpd.conf来限制特定文件的访问

(4)使用PHP配置来禁止PHP在浏览器中直接运行

20、编写PHP代码实现自定义MD5加强安全性 ?

加盐、MD5哈希值并验证

21、如何实现PHP安全过滤?

使用PHP内置的过滤器:filter_var,filter_input

防止SQL注入攻击

防止XSS攻击

使用安全的Hash算法

22、PHP的线程安全与非线程安全版本的区别 ?

Thread Safe(线程安全)版本php适用在使用ISAPI或者module的web服务器上,如IIS的ISAPI模式或者apache module模式

Non Thread Safe(非线程安全)版本php适用在使用CGI以及fastCGI的web服务器上,如nginx,lighttpd以及IIS的CGI模式

  1. 简述PHP代码书写的安全措施与规范 ?

遵循标准的PHP语法psr-1和psr-2

使用合适的命名规则

缩进:每级缩进用四个空格,而不是使用制表符

写注释

一个函数或方法完成一个任务

24、简述常用必须的PHP服务端设置规则 ?

25、简述PHP四大安全策略 ?

文件系统安全

数据库安全

用户数据过滤

其他安全策略

26、简述PHP网络爬虫常见的反爬策略 ?

(1)IP限制

(2)验证码识别

(3)频率限制

(4)JavaScript检测

27、简述PHP常用的安全函数作用 ?

28、MySQL如何实现PHP输入安全 ?

输入过滤:HTML转义、去除多余的空格、过滤特殊字符

验证数据:filter_var、验证URL、验证数字is_numeric

数据库安全:使用预处理语句、使用密码哈希

29、简述PHP弱类型安全问题 ?

不同类型的数据在进行比较的时候,会自动进行类型转换。

哈希(Hash)用于将任意长度的输入通过散列算法变换成固定长度的输出,需要使用 hash_equals() 函数来进行比较哈希,hash_equals() 是可以防止时序攻击的一种

当遇到非空字符串与布尔值发生比较时,建议使用三个等号(===)来判断变量值与类型是否完全相等。

30、编写PHP函数实现文件安全下载 ?

完整代码:

31、简述PHP代码审计中容易出问题的点?

安全功能的错误实现:例如使用不安全的函数如 eval(), shell_exec()

跨站脚本攻击(XSS)

注入攻击

不安全的存储

不恰当的错误处理

不安全的会话管理

不安全的文件上传

不安全的重定向

不安全的缓存控制

不安全的CORS实现​​​​​​​

标签: php 安全 开发语言

本文转载自: https://blog.csdn.net/wxjing1/article/details/137924098
版权归原作者 wxjing1 所有, 如有侵权,请联系我们删除。

“php知识点-安全”的评论:

还没有评论