tian (ID: 45)
等级:精灵
积分:135
发帖:7 篇
来自:保密
注册:2023/11/24 9:14:32
造访:2024/9/24 9:23:41
[ 第 1 楼 ]
回复
ASP程序,不管是用户注册,还是登陆后的提交事件,都需要过滤吗?
函数安全过滤:
如果是自写函数过滤,这个自写函数完整代码怎么写的。
上传的安全问题:
有时候被人恶意上传,上传的文件被改成图片后缀的木马。楼主不能保证安全,也就没有开放上传的权限。感觉这样连自己也限制住了,有什么好的方法解决上传安全问题吗?需要ASP前台和后台处理的完整上传ASP代码。
2023/11/26 15:35:52
IP:已设置保密
風雲 (ID: 3)
头衔:论坛版主
等级:大天使
积分:1567
发帖:70 篇
来自:保密
注册:2022/3/30 15:28:53
造访:2024/11/22 10:43:44
[ 第 2 楼 ]
回复
用户注册和登录提交这块,安全问题应该是 SQL 注入。传统 ASP 最常见的做法是写函数替换敏感内容。现在通用的做法是传参的方式。本论坛的代码也采用了传参的方式,例如:
select * from users where userid=@userid and passwd=@passwd
因为不存在拼接用户提交的内容,用户无法重新设计 sql 语句内容,所以不会有注入风险。传统采用拼接的方式,例如:
userid = "admin"
passwd="1' or '1'='1"
sql = "select * from users where userid='"&userid&"' and passwd='"&passwd&"'"
这时,实际执行的 sql 语句将是:
select * from users where userid='admin' and passwd='1' or '1'='1'
传参方式可以 GPT 写示例代码。封装之后分方便,例如本站的登录方法是:
var par = { user: form("user") || "", pass: md5(form("pass") || "a", 16) };
if(!par.user) return { err: "未提供用户名" };
var user = db().fetch("select * from users where nick=@user and pass=@pass", par);
关于上传的安全问题,主要是在 asp 端获得上传文件的后缀名,然后用正则校验该后缀名,严格限制仅允许 jpg|png|gif|txt|docx|pptx|xlsx|zip|rar 等后缀,条件不允许就不保存文件。然后限制目录读写权限也很重要,例如只有 /uploads 上传目录和 /App_Data 数据库目录才有 IUSRS 的写权限,其他文件和目录只有读权限等,避免过时的老旧服务器因系统安全漏洞导致 asp 文件被注入木马。
2023/11/26 19:18:08
IP:已设置保密
tian (ID: 45)
等级:精灵
积分:135
发帖:7 篇
来自:保密
注册:2023/11/24 9:14:32
造访:2024/9/24 9:23:41
[ 第 3 楼 ]
回复
感谢风云解惑。
我的一个ASP网站需要用户登录提交文章。
用户登录后,提交标题和内容到数据库。
需要检测用户提交的标题和内容吗?
怎么检测?
2023/11/26 20:11:59
IP:已设置保密
風雲 (ID: 3)
头衔:论坛版主
等级:大天使
积分:1567
发帖:70 篇
来自:保密
注册:2022/3/30 15:28:53
造访:2024/11/22 10:43:44
[ 第 4 楼 ]
回复
看情况,如果不使用传参方式,需要替换单引号为两个单引号。
然后如果是不审核即自动发布,可能需要调云借口审查色情及政治等违规内容。
最后就是显示的时候可能需要对 HTML标签转码。
2023/11/26 20:17:14
IP:已设置保密
tian (ID: 45)
等级:精灵
积分:135
发帖:7 篇
来自:保密
注册:2023/11/24 9:14:32
造访:2024/9/24 9:23:41
[ 第 5 楼 ]
回复
因为之前一直是ACCESS数据库,我是使用 rs.addnew 和 rs.update 添加新内容和编辑更新。现在升级为SQL2005数据库,还是用的这两个。 为了安全,需要添加2个单引号吗
====================
添加新内容用的以下语句:
title=trim(request.form("title"))
content=trim(request.form("content"))
set rs=server.createobject("ADODB.recordset")
rs.Open "SELECT * FROM 表名 Where ID is null",conn,1,3
rs.addnew
rs("titles")=title
rs("contents")=content
rs.close
conn.close
set conn=nothing
====================
编辑更新已有内容使用以下语句:
set rs=server.createobject("ADODB.recordset")
rs.Open "SELECT * FROM 表名 Where id="&request("id"),conn,1,3
rs("titles")=title
rs("contents")=content
rs.update
rs.close
conn.close
set conn=nothing
2023/11/26 20:48:34
IP:已设置保密
風雲 (ID: 3)
头衔:论坛版主
等级:大天使
积分:1567
发帖:70 篇
来自:保密
注册:2022/3/30 15:28:53
造访:2024/11/22 10:43:44
[ 第 6 楼 ]
回复
使用游标插入的方式也能防止注入问题。更新的时候可能会有注入,例如 可以对 request("id") 的内容做手脚。
假设 request("id") 内容 为 "1; drop database master",那么 rs.open 内容将是 "SELECT * FROM 表名 Where id=1; drop database master"
2023/11/26 21:04:25
IP:已设置保密
tian (ID: 45)
等级:精灵
积分:135
发帖:7 篇
来自:保密
注册:2023/11/24 9:14:32
造访:2024/9/24 9:23:41
[ 第 7 楼 ]
回复
例如 可以对 request("id") 的内容做手脚。
这个怎么防止?
2023/11/26 21:31:22
IP:已设置保密
風雲 (ID: 3)
头衔:论坛版主
等级:大天使
积分:1567
发帖:70 篇
来自:保密
注册:2022/3/30 15:28:53
造访:2024/11/22 10:43:44
[ 第 8 楼 ]
回复
还是使用传参方式,或者将 Request("id") 转为整数再拼接 SQL,vbs 好像是 CInt?
2023/11/26 21:39:37
IP:已设置保密
tian (ID: 45)
等级:精灵
积分:135
发帖:7 篇
来自:保密
注册:2023/11/24 9:14:32
造访:2024/9/24 9:23:41
[ 第 9 楼 ]
回复
SQL2005 属性里面的 内存分配如何设置为好?
服务器内存选项 需要勾选 “使用AWE 分类内存” 吗?
配置值和运行值如何选择?
最小服务器内存设置多少?
最大服务器内存设置多少?
其它内存选项
创建索引占用的内存设置多少?
每次查询占用的最小内存设置多少?
2个机器,分别是8G内存(WINDOWS2003 32BIT) 和 2G内存(WINDOWS2012 64BIT) 为例, 上述各项值,2G内存的机器 和 8G内存的机器 分别如何选择和设置。
2023/11/26 21:40:47
IP:已设置保密
風雲 (ID: 3)
头衔:论坛版主
等级:大天使
积分:1567
发帖:70 篇
来自:保密
注册:2022/3/30 15:28:53
造访:2024/11/22 10:43:44
[ 第 10 楼 ]
回复
这些不太熟,我觉得用默认值就已经很好了,因为默认值是官方建议的值,官方不会推荐一个不适合大多数用户的参数设置。 😄
我常用的数据库是 pgsql 和 mysql,SQL Server 用得极少,asp 这块用 SQL CE 多一点。
2023/11/26 21:43:09
IP:已设置保密
tian (ID: 45)
等级:精灵
积分:135
发帖:7 篇
来自:保密
注册:2023/11/24 9:14:32
造访:2024/9/24 9:23:41
[ 第 11 楼 ]
回复
在ASP语言中CInt()是16位的,CLog()才是32位的。所以ASP在处理大于32,767的ID时会报溢出。这不是SQL的错,是ASP的错,把对应的Cint()改成CLng()就可以了
CInt表示数字。 可以CInt(Request("id")),好像得改成CLng(Request("id"))
2023/11/26 21:47:30
IP:已设置保密
tian (ID: 45)
等级:精灵
积分:135
发帖:7 篇
来自:保密
注册:2023/11/24 9:14:32
造访:2024/9/24 9:23:41
[ 第 12 楼 ]
回复
SQL2005默认没有勾选 “使用AWE 分类内存” 。
2023/11/26 21:50:13
IP:已设置保密