我使用cftable
或cfloop
输出ColdFusion中的项目表。但是,在点击其中一个表行时调用编辑器页面的正确方法是什么?
以下是代码:
<table class="grid">
<tr>
<th>id</th>
<th>Date</th>
<th>Description</th>
<th>Status</th>
<th>Urgency</th>
<th>Severity</th>
</tr>
<cfloop query="GetIssues">
<tr>
<td><cfoutput>#id#</cfoutput></td>
<td><cfoutput>#CreatedOn#</cfoutput></td>
<td><cfoutput>#ShortDesc#</cfoutput></td>
<td><cfoutput>#Status#</cfoutput></td>
<td><cfoutput>#Urgency#</cfoutput></td>
<td><cfoutput>#Severity#</cfoutput></td>
</tr>
</cfloop>
</table>
我可以使用a href
向编辑页面发出GET请求,但这是正确/安全的方式吗?
答案 0 :(得分:3)
您当然可以创建指向编辑器页面的链接并传递ID,但是,如果您的ID是数字,则恶意用户很容易猜到其他项目的ID。为了缓解这个问题,我倾向于使用UUID作为我的ID。猜测另一个元素的ID非常困难。
此外,最好将cfloop包装在cfoutput中,而不是包装每个td - 并且应该调整变量名称的范围。
例如:
<cfoutput>
<cfloop query="GetIssues">
<tr>
<td><a href="edit.cfm?id=#GetIssues.id#">#GetIssues.id#</a></td>
<td>#GetIssues.CreatedOn#></td>
<td>#GetIssues.ShortDesc#</td>
<td>#GetIssues.Status#</cfoutput></td>
<td>#GetIssues.Urgency#</cfoutput></td>
<td>#GetIssues.Severity#</td>
</tr>
</cfloop>
</cfoutput>