网站开发常规安全规范(持续更新)

针对网站开发中常见的安全问题,整理一些常见开发规范。(持续更新)

1) SQL注入

必须使用占位符生成所有SQL语句。

通过串联构建SQL语句时,请使用数据库引擎提供的特殊API来执行转义,并正确地组成SQL语句中的文字。

不要直接将传递给web应用程序的参数写入SQL语句(必须过滤传入参数,并且使用占位符组成SQL语句)。

限制显示在web浏览器上的错误消息,避免出现具体SQL错误等提示。

向数据库帐户授予最低权限。

2) OS命令注入

避免开放、使用可能调用shell命令的函数或接口。

当使用可以调用shell命令的函数时,请检查组成shell参数的所有变量,并确保只执行那些被授权执行的变量。

3) 未检查路径名参数/目录信任

不要直接使用外部参数指定存储在web服务器上的文件的名称。

使用固定目录来处理文件名,并去除文件名中的目录名。

正确管理文件访问权限。

检查文件名。

4) 会话管理不完备

使用HTTPS:确保应用使用HTTPS来加密所有的请求和响应数据,从而防止会话信息在网络中明文传输,减少中间人攻击的风险。

安全的Cookie设置:设置HttpOnly标志,防止通过JavaScript访问Cookie,增加Cookie的安全性。设置Secure标志,确保只有通过HTTPS传输时才能使用Cookie。

登录会话标识(Session ID):在每次请求时强制用户提供一个唯一的会话标识符,并验证其有效性。

定期更新会话标识:要求用户定期更新他们的会话标识,例如,通过要求用户登录来获取一个新的会话标识。

注销机制:提供及时的注销或退出登录功能,让用户可以主动终止会话。

5) Cross-Site Scripting

检查输入值,不允许HTML/Javascript/CSS文本输入。

对要输出到网页的所有内容执行过滤、转义。

在HTML中输出URL时,只允许以某些模式开头的URL,如“http://”和“https://”。

不允许动态创建包含<script></script>标记的内容。

不允许从任意网站导入样式表。

6) CSRF

当通过POST方法访问要执行某些操作的网页时,生成一个秘钥,将其插入表单的隐藏标签中,只有当秘钥正确时才执行请求的操作。

在执行请求前要求输入密码、或图形验证码、或手机验证码,只有在密码、或图形验证码、或手机验证码正确的情况下才能完成操作。

检查referrer是否为预期的URL,只有当URL正确时才能继续。

7) HTTP标头注入

不要直接打印HTTP头。

检查请求头是否合法,对请求头进行验证和清理,并且避免将用户输入包含在响应标头中。

删除请求头中出现的所有换行符。

8) 邮件头注入

标头使用固定值,并将所有外部输入输出到电子邮件正文。

如果固定值不能用于标头,请使用web应用程序的执行环境或语言提供的电子邮件发送API。

不要在HTML中指定电子邮件地址。

删除外部文本输入中出现的所有换行符。

9) 点击劫持

确保你的服务器在HTTP响应头部中正确设置了X-Frame-Options: DENY或SAMEORIGIN。

使用Content Security Policy(CSP)并设置frame-ancestors指令。

使用X-XSS-Protection,并确保它被设置为0。

10)缓冲区溢出

对于外部输入的数据进行验证和清理,确保它们的大小不会超过预期的缓冲区大小。

使用 StringBuilder 或 StringBuffer 的 append 方法来拼接字符串,并提前设置一个合理的容量大小,避免不断扩展内存。

11)缺少访问控制和授权控制

我们基于Shiro实现身份验证、访问控制、授权控制。

12)服务器安全对策

经常检查操作系统和软件漏洞信息,并采取相应的必要措施。

建议使用加密身份验证访问服务器,例如公钥,而不是使用密码进行远程服务器访问。

如使用密码身份验证时,请确保使用足够复杂的字符串。

禁用未使用的服务和接口,并删除不必要的帐户。

不要将不打算公开的文件放在web服务器的公共目录下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/28049.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1.个人博客系统项目

一、项目介绍 个人博客系统 相关技术&#xff1a; SpringBootSpringMvcMybatisMysqlRedis项目简介&#xff1a;本项目为一个功能完善的个人博客系统&#xff0c;支持文章的编辑、修改、删除和发布&#xff0c;以及作者个人信息的展示等功能。项目描述&#xff1a; 采用前后端…

利用钉钉机器人和PHP开发一款免费的网站可用性检测工具,单节点版

前言 手里有几套系统正在运维&#xff0c;需要保障正常运行&#xff0c;所以可用性检测就必不可少啦&#xff0c; 以前本来是用的阿里官方的云监控&#xff0c;但现在价格感觉太贵了&#xff0c;不划算 那就自己手搓一个简易版的监控吧。 成品效果展示 代码展示 <?php …

微信小程序毕业设计-实验室管理系统项目开发实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…

centos环境上:k8s 简单安装教程

本次演示安装3节点k8s环境&#xff0c;无需多言&#xff0c;直接上操作步骤&#xff1a; 1、环境准备 k8s部署前&#xff0c;首先需要准备好环境&#xff0c;除了1.4 步骤&#xff0c;其他步骤在所有&#xff08;3个&#xff09;节点上都要执行&#xff1a; 1.1 关闭防火墙 s…

【工具】新手如何正确使用Pycharm?

1. 什么是JetBrains Toolbox JetBrains Toolbox是一个管理工具&#xff0c;用于安装、更新和管理JetBrains开发工具的所有版本。它可以简化多个IDE的管理&#xff0c;并确保你总是使用最新版本的软件。 2. 安装JetBrains Toolbox 步骤1&#xff1a;下载Toolbox 访问JetBrai…

非关系型数据库NoSQL数据层解决方案 之 redis springboot整合与读写操作 2024详解以及window版redis5.0.14下载百度网盘

redis下载安装以及基本使用 下载地址 链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;0410 一个名对应一个数值 内存级 在内存里进行操作 准备启动 我们现在就有一个redis客户端的服务器了 我们再启动一个cmd 操作redis数据库 redis里面的基本数据类型有五种 …

PythonSQL应用随笔4——PySpark创建SQL临时表

零、前言 Python中直接跑SQL&#xff0c;可以很好的解决数据导过来导过去的问题&#xff0c;本文方法主要针对大运算量时&#xff0c;如何更好地让Python和SQL打好配合。 工具&#xff1a;Zeppelin 语法&#xff1a;PySpark&#xff08;Apache Spark的Python API&#xff09;…

改进YOLO系列 | Microsoft 团队 | Dynamic Convolution :自适应地调整卷积参数

改进YOLO系列&#xff1a;Microsoft团队的Dynamic Convolution——自适应调整卷积参数的计算机视觉方法&#xff08;中文综述&#xff09; 简介 YOLO&#xff08;You Only Look Once&#xff09;是一种目标检测算法&#xff0c;以其速度和精度著称。 本文将介绍YOLO系列的改进…

HTML5的未来:掌握最新技术,打造炫酷网页体验

引言 随着互联网技术的飞速发展&#xff0c;HTML5已经成为构建现代网页和应用的核心技术之一。HTML5不仅提供了丰富的语义化标签&#xff0c;还引入了多项前沿技术&#xff0c;使得网页体验更加丰富多彩。本文将探讨HTML5的最新技术&#xff0c;并结合行业实践&#xff0c;提供…

Linux操作系统学习:day02

内容来自&#xff1a;Linux介绍 视频推荐&#xff1a;[Linux基础入门教程-linux命令-vim-gcc/g -动态库/静态库 -makefile-gdb调试]( 目录 day025、Linux目录结构6、相对路径7、绝对路径8、命令提示行9、命令解析器10、命令行快捷键11、cd 命令—目录切换12、ls 命令13、文件…

在Ubuntu 20.04上安装和配置MySQL 8:详细指南和远程访问设置

目录 一、MySQL 8的特点和优势 二、在Ubuntu 20.04上安装MySQL 8 三、初始化MySQL 四、配置MySQL远程访问 五、 创建远程访问用户 六. 配置防火墙 七、 测试远程访问 总结 MySQL是一种开源的关系型数据库管理系统&#xff0c;被广泛应用于各种应用程序和网站中。MySQL …

服务器硬件基础知识:服务器硬件组成和选择

服务器是网络世界的核心,支撑着各种应用程序和服务的运行。了解服务器的硬件基础知识,不仅能帮助我们选择和配置适合的服务器,还能确保其高效稳定地运行。本文将详细介绍服务器硬件的各个关键组成部分,并探讨如何根据不同需求选择合适的硬件配置。 一、服务器硬件的主要组…

Agilent 安捷伦 N9342C 手持式频谱分析仪

Agilent 安捷伦 N9342C 手持式频谱分析仪 N9342C 手持式7GHz频谱分析仪专为现场测试而设计&#xff0c;无论是安装和维护射频系统&#xff0c;现场进行故障诊断&#xff0c;监测射频环境还是分析干扰&#xff0c;都可以为您提供快速、精确的测量。它具有同类最佳的显示平均噪声…

Vscode中使用make命令

前言 需要注意&#xff0c;如下操作需要进行网络代理&#xff0c;否则会出现安装失败的情况 安装 第一步 — 安装MingGW &#xff08;1&#xff09;进入官网下载 &#xff08;2&#xff09;下载完成之后&#xff0c;双击exe文件 &#xff08;3&#xff09;点击Install &#x…

iOS18新增通话录音和应用锁!附升级教程及内置壁纸

一觉睡醒&#xff0c;iOS18终于是揭开面纱了&#xff0c;而且已经有测试版给开发者使用了。 不过还是建议咱们普通用户不要轻易尝试&#xff0c;而且在升级之前一定要用iMazing做个备份&#xff0c;以免测试系统出现问题&#xff0c;丢失数据。 这次WWDC2024与之前爆料完全一样…

【云岚到家】-day04-2-索引同步-搜索接口

【云岚到家】-day04-2-索引同步-搜索接口 1 索引同步1.1 编写同步程序1.1.1 创建索引结构1.1.2 编写同步程序1.1.2.1 添加依赖1.1.2.2 配置连接ES1.1.2.3 编写同步程序 1.1.3 测试1.1.4 小结1.1.4.1 如何保证CanalMQ同步消息的顺序性&#xff1f;1.1.4.2 如何保证只有一个消费者…

Maven 核心插件 maven-clean-plugin 使用详解

在软件开发中&#xff0c;构建和管理项目的复杂性随着代码量和依赖的增加而不断提升。Maven作为一个强大的构建工具&#xff0c;简化了这一过程&#xff0c;并通过其插件机制提供了丰富的功能。其中&#xff0c;maven-clean-plugin 是Maven的核心插件之一&#xff0c;它在项目的…

java课设

项目简介:射击生存类小游戏 项目采用技术: 游戏引擎: Unity编程语言: Java图形处理: NVIDIA PhysX (物理引擎), HDRP (High Definition Render Pipeline)音效与音乐: FMOD, Wwise版本控制: Git 功能需求分析: 角色控制&#xff1a;玩家能够使用键盘和鼠标控制角色移动、瞄准…

前端面试题——React篇

文章目录 前言1.useEffect是异步还是同步为何是异步如何拿到最新的数据 2.微任务和宏任务概念优点 3.事件循环&#xff08;Event Loop&#xff09;概念执行机制 4.React性能优化手段 前言 准备了一些高频面试题&#xff0c;有需要的小伙伴可以收藏&#xff0c;需要的时候看看&…

基于RandLA-Net深度学习模型的激光点云语义分割

一、场景要素语义分割部分的文献阅读笔记 RandLA-Net是一种高效、轻量级的神经网络&#xff0c;其可直接逐点推理大规模点云的语义标签。RandLA-Net基于随机点采样获得了显著的计算和内存效率&#xff0c;并采用新的局部特征聚合模块有效地保留了几何细节&#xff0c;弥补了随机…