PHP面试之mysql内置函数,xss漏洞,sql注入

面试被问到:

1. MySql有哪些常用聚合函数:

count()、sum()、max()、min()、avg()、group_concat()

mysql还有常用的函数:

(1)数值函数:

Abs()=》(绝对值abs(-10.9) = 10)

Pi() //获得圆周率

Rand() //随机数

...

(2)时间日期函数:

Now()、Date()、Time()...

(3)字符串函数:

TRIM(string) //去除前后两端的空格

LENGTH(string) //string长度、字节

...

(4)流程函数

(5)其他常用函数:

md5()、Default()...

2. SQL注入攻击的解决办法:

我自己的理解是,sql注入是指通过一定的数据库语法手段结合所用代码特性生成特殊意义的sql语句并运行,称之为sql注入,

解决办法一般是:

(1)对数据库的输入进行过滤处理(即不要相信任何用户输入的数据);

(2)针对java,使用 PreparedStatement

参考链接:https://blog.csdn.net/czh500/article/details/88202971,https://www.cnblogs.com/zhidongjian/p/10413635.html

(3)针对php,可以更改php.ini的配置信息( addslashesmysql_real_escape_stringmysql_escape_string),可以利用函数对get或者post的数据做单独处理过滤,普通的htmlspecialchars是不行的,它只针对 把预定义的字符 "<" (小于)和 ">" (大于)转换为 HTML 实体 ,并不能完全阻止sql注入攻击,PDO的prepare能解决大部分的攻击,但是也不能百分百的防止注入,当然这是我自己的理解

参考链接:https://www.cnblogs.com/liliuguang/p/10429163.html,https://www.v2ex.com/amp/t/362625

3.xss跨站脚本攻击:

常见的 XSS 攻击有三种:反射型XSS攻击、DOM-based 型XXS攻击以及存储型XSS攻击。

1.反射型XSS攻击反射型 XSS 一般是攻击者通过特定手法(如电子邮件),诱使用户去访问一个包含恶意代码的 URL,当受害者点击这些专门设计的链接的时候,恶意代码会直接在受害者主机上的浏览器执行。反射型XSS通常出现在网站的搜索栏、用户登录口等地方,常用来窃取客户端 Cookies 或进行钓鱼欺骗。

2.存储型XSS攻击也叫持久型XSS,主要将XSS代码提交存储在服务器端(数据库,内存,文件系统等),下次请求目标页面时不用再提交XSS代码。当目标用户访问该页面获取数据时,XSS代码会从服务器解析之后加载出来,返回到浏览器做正常的HTML和JS解析执行,XSS攻击就发生了。存储型 XSS 一般出现在网站留言、评论、博客日志等交互处,恶意脚本存储到客户端或者服务端的数据库中。

3.DOM-based 型XSS攻击基于 DOM 的 XSS 攻击是指通过恶意脚本修改页面的 DOM 结构,是纯粹发生在客户端的攻击。DOM 型 XSS 攻击中,取出和执行恶意代码由浏览器端完成,属于前端 JavaScript 自身的安全漏洞。

防止方法:

1. 对输入内容的特定字符进行编码,例如表示 html标记的 < > 等符号。

2. 对重要的 cookie设置 httpOnly, 防止客户端通过document.cookie读取 cookie,此 HTTP头由服务端设置。 

3. 将不可信的值输出 URL参数之前,进行 URLEncode操作,而对于从 URL参数中获取值一定要进行格式检测(比如你需要的时URL,就判读是否满足URL格式)。 

4. 不要使用 Eval来解析并运行不确定的数据或代码,对于 JSON解析请使用 JSON.parse() 方法。 

5. 后端接口也应该要做到关键字符过滤的问题。 

6. 入参字符过滤,在源头控制,把输入的一些不合法的东西都过滤掉,从而保证安全性。如移除用户提交的的DOM属性如onerror,移除用户上传的Style节点,<iframe>, <script>,<a>节点等

7. 出参进行编码,如果源头没控制好,就得后期补救了:像一些常见的符号,如<>在输出的时候要对其进行转换编码,这样做浏览器是不会对该标签进行解释执行的,同时也不影响显示效果。例如:对<>做编码如:"<"用:"&lt;",">"用:"&gt;"来代替。

8.入参长度限制,通过以上的案例我们不难发现xss攻击要能达成往往需要较长的字符串,因此对于一些可以预期的输入可以通过限制长度强制截断来进行防御。

本文参照部分博客总结,侵删

https://blog.csdn.net/czh500/article/details/88202971,

https://www.cnblogs.com/mao2080/p/9460397.html,

https://www.cnblogs.com/zhidongjian/p/10413635.html,

https://www.cnblogs.com/liliuguang/p/10429163.html,

https://www.v2ex.com/amp/t/362625

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章