对于传统的经典ASP应用程序,我应该删除所有安全攻击问题。目前,DB包含已编码的数据,不再有插入/更新操作。仅从现在开始就选择操作。
我能够删除SQL注入和其他一些安全问题,但无法删除
跨站点脚本(XSS):验证不良问题
这成为交付项目的瓶颈。
有人可以帮我解决这个问题。
示例: 我在DB中的数据如下。
一个细胞样本数据(韩语和英语字符)
1.. Rupture disc 설치 관련 필요 자재 List<BR>──────────────────────────────────────<BR> No 필요 자재 재질 비 고 <BR>──────────────────────────────────────<BR> 1 inlet isolation valve, 8" Hast C276 기존 재고 사용 <BR> 2 RD holder inlet/outlet Hast C276 / 316L 신규 구매 <BR> 3 Rupture Disc Hast C276 신규 구매 <BR> 4 SV outlet isolation valve, 10" SUS 316L 신규 구매 <BR>──────────────────────────────────────<BR><BR>2. Rupture Disc Specification<BR> 1) Rupture design press : 4kg/cm2<BR> 2) Design temperature : 100℃<BR> 3) Rupture press tolerance : ± 5%<BR> 4) Manufacturing range : + 0%, - 10%<BR> 5) Material spec : M1, M4, C31<BR> 6) Max. allowable oper press : 3.2kg/cm2 (at 100℃)<BR><BR>3. Rupture Disc spec 선정 기준<BR> . Code, Standard = API 520, ASME VIII<BR> . Required Burst Pressure = Vessel Design Pressure<BR> . Manufacturing range(+0% ∼ -10%) of Required Burst Pressure<BR> . Rupture Pressure Tolerance +5%, -5% of Stamped Burst Pressure<BR> . Specified Disc Temperature = Actual Temperature of Disc in Operation <BR> → usually lower at disc than in liquid phase of vessel <BR><BR>4. Rupture Disk 전단 및 SV2209 후단 Isolation valve는 CSO(CAR SEAL OPEN) .<BR><BR>5. Rupture Disk 후단에 PG2209를 설치하여 운전 중 Rupture disk 파손 여부 확인 가능토록 함.<BR>
我正在显示以上单元数据:
示例页面
<!-- #include file="INCLUDES/HTMLDecode.inc" -->
.
.
.
<HTML>
.
.
.
sampledata = rs("sampledata")
.
.
.
<TD><%= ClearForAttack(sampledata) =%></TD>
.
.
.
</HTML>
以上功能定义如下:
用户定义的功能:
<%
Function HTMLDecode(sText)
Dim I
sText = Replace(sText, """, Chr(34))
sText = Replace(sText, "<" , Chr(60))
sText = Replace(sText, ">" , Chr(62))
sText = Replace(sText, "&" , Chr(38))
sText = Replace(sText, " ", Chr(32))
For I = 1 to 255
sText = Replace(sText, "&#" & I & ";", Chr(I))
Next
HTMLDecode = sText
End Function
%>
<%
Function ClearForAttack(pStrValue)
if len(pStrValue)>0 then
pStrValue = HTMLDecode(Server.HTMLEncode(pStrValue))
pStrValue = replace(pStrValue,"'","")
pStrValue = replace(pStrValue,"`","")
pStrValue = replace(pStrValue,"%","")
pStrValue = replace(pStrValue,"<","<")
pStrValue = replace(pStrValue,">",">")
else
pStrValue = ""
end if
ClearForAttack = pStrValue
End Function
%>
要显示已编码的数据,我正在使用HTMLDecode和HTMLEncode函数
请编辑功能或建议其他方法。
非常感谢您的帮助或建议。
提前致谢。
答案 0 :(得分:0)
如上所述,只需清理发布/查询字符串数据来自用户输入和数据库的所有数据。您可以尝试多种方法,包括Server.HTMLEncode
。
如果您需要对此进行扩展以涵盖数据库字段,那么您需要在<
和>
上执行某种搜索和替换,将其替换为{{1}分别和<
。
XSS存在一些问题。您可能需要read this first。
答案 1 :(得分:0)
Server.HTMLEncode清理查询。您需要运行验证过程以满足不良验证。有一个简单的黑名单&#34;您可以根据自己的需要进行更改的程序。检查http://blogs.iis.net/nazim/filtering-sql-injection-from-classic-asp或Validation for Form and QueryString in ASP Classic using Regex. Almost working but missing something?。一旦合并,应删除大多数不良验证。