保护PayPal捐赠表格免受XSS - CodeIgniter的影响


Protecting PayPal donation form from XSS - CodeIgniter

我对我的捐赠表格是否安全(也许我已经阅读了太多XSS文章)感到非常偏执。我使用了PayPal提供的按钮生成器并将其插入到我的页面中,但我还添加了一个选择元素,该元素将"item_name"值作为其名称属性(PayPals html值之一):

即像这样:

<select name="item_name">
<option>...</option>
...
</select>

我首先关心的是是否可以这样做,因为我将捐赠按钮作为保存的按钮存储在我的帐户中,PayPal说将他们给您的代码"按原样"放入您的页面中,而无需更改。我知道这是不言而喻的,但它只是一个厚颜无耻的选择元素,可以让用户体验:P。可以吗?

我想问的另一个问题是,我是否应该使PayPal给我的表单上的操作属性指向控制器中的一个函数,该函数使用 htmlspecialchars() 清理选择元素值(甚至有必要为此目的检查选择元素吗?),并在该函数中以某种方式指向PayPal url?

除了给我发电子邮件的表单之外,我的网站上没有任何其他表单,我将对其应用 XSS 过滤,但这个PayPal表单让我对如何保护它感到困惑。

如果您没有从客户端获取输入并将其显示在您的网站上,则无需担心。

XSS 的两种主要情况是基于数据库和基于请求。在基于数据库的系统中,攻击者将恶意代码提交到公开显示的字段(注释表单,类似内容)。然后,每当显示此表单中的数据时,都会运行代码 - 假设数据库未正确清理。

另一种方法是通过GET请求的XSS。攻击者向受害者发送指向您网站的链接,并在 URL 中将恶意代码作为参数。如果此参数显示在页面上且未正确清理,则可能会发生 XSS。

echo "You just bought a " . $_GET['itemname'];

在这种情况下,您不必担心,也不必先费心发送给控制器进行消毒 - PayPal自己会处理。

附加说明:您无需担心电子邮件表单中的XSS,Javascript不是由邮件客户端运行的。您需要担心的是标头注入。

PayPal表单

(html)不能使用XSS更改,除非入侵者可以访问您的后端,您可以在其中选择更改显示表单PayPal HTML页面。但在这种情况下,PayPal形式不是您应该担心的。顺便说一句,在这种情况下像你一样思考是可以的,安全性是第一位的。