本文由 ChatMoney团队出品

当运用程序将用户输入直接拼接到sql语句中时,攻击者可以插入恶意sql代码来修改原始查询,获取或毁坏数据库信息。
防御方法
预处理语句利用预处理语句可以有效防止sql注入,由于参数值不会被视为sql的一部分。
$stmt = $pdo->prepare('select from users where username = :username');$stmt->execute(['username' => $_post['username']]);
确保利用pdo或mysqli扩展,并启用它们供应的仿照预处理功能。
转义输入
如果无法利用预处理语句,应至少对用户输入进行适当的转义。
$username = $db->real_escape_string($_post['username']);$query = "select from users where username = '$username'";
工具关系映射(orm)工具常日供应内置的sql注入保护。
跨站脚本攻击(xss)
漏洞描述攻击者通过在网站上注入恶意脚本,当其他用户浏览该网站时,这些脚本会被实行,可能导致信息透露。
防御方法
过滤和转义输出对所有的输出数据运用html实体编码或剥离标签。
echo htmlspecialchars($user_input, entry_tags, $charset);
利用http头content-security-policy来限定浏览器加载页面时外部资源的权限。
利用http only cookie
设置cookie属性为httponly,以防止客户端脚本访问cookie。
setcookie('session_id', '...', httponly=>true);
攻击者利用用户在其他选项卡或窗口中已认证的身份,勾引用户点击链接或访问站点,实行非预期的操作。
防御方法
利用csrf tokens在表单中嵌入随机天生的、与用户会话关联的token,并在提交时验证这个token。
// 天生一个csrf token$_sssion['csrf_token'] = bin2hex(random_bytes(32));// 表单中添加token<input type="hidden" name="csrf_token" value="<?php echo $_sssion['csrf_token']; ?>"// 验证tokenif ($_post['csrf_token'] != $_sssion['csrf_token']) {// 谢绝要求}
验证要求来源
检讨http referer头部,确保要求来自合法的源。
同步操作确认
对付敏感操作,哀求用户重新输入密码或进行二次验证。
文件上传漏洞
漏洞描述用户可以上传恶意文件,如脚本文件,进而掌握做事器或者利用文件包含漏洞实行远程代码。
防御方法
文件类型检讨只许可预定义的文件类型上传,并对文件扩展名进行检讨。
$allowed_types = ['image/jpeg', 'image/png'];$file_type = exif_imagetype($_files['upload']['tmp_name']);if (!in_array($file_type, $allowed_types)) {// 谢绝上传}
文件内容检讨
利用文件扫描工具如clamav扫描上传的文件内容。
文件权限和路径
存储上传文件的目录不应具有实行权限,并且不应该位于可以通过web访问的路径下。
利用白名单机制
不要基于黑名单打消不屈安的文件类型,而是该当利用白名单仅许可特定的安全文件类型。
关于我们
本文由ChatMoney团队出品,ChatMoney专注于AI运用落地与变现,我们供应全套、持续更新的AI源码系统与可实行的变现方案,致力于帮助更多人利用AI来变现,欢迎进入ChatMoney获取更多AI变现方案!