发布时间:2021-06-02 15:39:34 阅读次数:140
PHP(超文本预处理器)是一种流行的服务器端脚本语言,主要用于开发网站和Web应用程序。它可用于构建静态或动态网站。它非常简单,易于学习。
1.如何在PHP中防止SQL注入?
答案:使用准备好的语句和参数化查询。
这些是数据库服务器与任何参数分开发送到并由数据库服务器解析的SQL语句。这样攻击者就不可能注入恶意SQL。
可以使用这两种方法来解决:
使用PDO(适用于任何受支持的数据库驱动程序)
使用MySQLi(适用于MySQL)
如果您连接到MySQL以外的数据库,您可以参考一个特定于驱动程序的第二选项。例如:PostgreSQL的pg_prepare()和pg_execute()。
PDO是通用选项。
正确设置连接
请注意,默认情况下,当使用
PDO访问MySQL数据库时,不会使用准备语句。要解决这个问题,您必须禁用模板语句的模拟。
准备好的语句可以用于动态查询吗?
虽然您仍然可以对查询参数使用准备好的语句,但动态查询本身的结构不能参数化,某些查询功能也不能参数化。
对于这些特定场景,最好使用白名单过滤器来限制可能的值。
2.如何检查字符串是否包含特定单词?
答案:您可以使用strpos() 函数,
该函数用于查找另一个字符串中一个字符串的出现情况。
替代答案:您可以使用正则表达式,与strpos相比,它更适合单词匹配,因为它也会返回某些字符串的真值。这可以通过使用单词边界在正则表达式中简单地避免。
3.为什么在PHP中不使用mysql_*函数?
答案:MySQL扩展:
1.未得以积极发展
2.从PHP 5.5(2013年6月发布)开始正式弃用。
3.截至PHP 7.0(2015年12月发布)已完全删除
· 这意味着截至2018年12月31日,它不存在任何受支持的PHP版本。如果您使用的是支持它的PHP版本,那么您使用的版本不支持修复安全问题。
4.缺少OO接口
5.不支持项有:
· 非阻塞、异步查询
· 准备好的语句或参数化查询
· 存储过程
· 多个语句
· “新”密码身份验证方法(MySQL 5.6默认打开;5.7中要求打开)
· MySQL 5.1 或更高版本中的任何新功能
4.PHP中如何从数组中删除元素?
答案:删除数组元素的方法各不相同,其中一些对某些特定任务比其他任务更有用。
删除一个数组元素
如果您只想删除一个数组元素,可以使用unset()或\array_splice()。此外,如果您有值,但不知道如何删除元素的密钥,您可以使用\array_search()获取密钥。